快速业务通道

Jenabean:将JavaBeans轻松绑定到RDF - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
/Person> ;

注意,这里为 Person 类及其属性(而不是默认包)提供了新的名称空间,该名称空间与作为 @Namespace 注释的参数提供的名称空间匹配。默认情况下,这个名称空间将会用于类及其属性。

在 RDF 的世界中,可以使用常见的属性;否则,无法开发出语义 Web。通过使用常见的属性,您可以使数据具有更多的语义并使其他人更加熟悉数据。如果一个 spider(Web 爬行变体)遇到我从 Jenabean 项目 URL 名称空间中生成的 RDF 片段,则无法利用这个片段。但您可以使用更常见和熟知的断言对 bean 进行简单地修改。FOAF(Friend of a Friend,FOAF)语言是一种用于链接各类人员的常见词汇表,它为电子邮件地址提供了一个特殊的属性:foaf:mbox。现在您所需做的全部工作是使用 Person bean 中的 @RdfProperty 注释:

@Id @RdfProperty("http://xmlns.com/foaf/0.1/mbox") public String getEmail() { return email;} <http://xmlns.com/foaf/0.1/mbox>   "person@example.com"^^xsd:string .

现在,email 属性将其自身断言为一个 foaf:mbox,它将被其他对您的数据感兴趣的 RDF 代理理解为一个电子邮件地址。

对象关系

在 OWL 和 RDF 世界中,通过对同一属性的多个断言来表达各种基数的关系。Jenabean 通过使用 java.util.Collection 接口极大简化了这一过程。清单 6 扩展 Person 类来支持朋友关系(使用松散的 foaf:knows 方式):

清单 6. 扩展 Person 以支持朋友关系

public Collection<Person> friends = new   LinkedList<Person>(); @RdfProperty("http://xmlns.com/foaf/0.1/knows") public Collection<Person> getFriends() { return friends;} public void setFriends(Collection<Person> friends) { this.friends = friends;}

Jenabean:将JavaBeans轻松绑定到RDF(5)

时间:2011-02-13 IBM Taylor Cowan

这没有什么值得惊奇的 — 只是使用类型为 Collection<Person> 的新字段 friends,以及相关的 get 和 set 方法。现在您可以创建一个 Person 和多个 friends,并通过将每个朋友添加到 friends 集合来实现关联。@RdfProperty 注释是可选的,但是如果您希望将其绑定到现有的第三方词汇表,那么它非常重要。注释指定您希望在 Jena 模型中将 “friend” 属性绑定到 foaf:knows RDF 属性。清单 7 显示如何使用传统的 JavaBean 技巧创建朋友关系:

清单 7. 使用生成的 RDF 表示朋友关系

Model m = ModelFactory.createOntologyModel(); Bean2RDF writer = new Bean2RDF(m); Person p = new Person(); p.setEmail("person@example.com"); Person f1 = new Person(); f1.setEmail("friend1@example.com"); Person f2 = new Person(); f2.setEmail("friend2@example.com"); p.getFriends().add(f1); p.getFriends().add(f2); writer.save(p); // modifies the Jena model m.write(System.out, "N3"); ... foaf:knows   jb:friend2@example.com, jb@friend1@example.com .

通过 Bean2RDF.write(...) 保存了简单的 Person bean 后,模型中包含遵守 FOAF 规范的新数据。

检索有序列表

在 RDF 中,没有定义子节点的顺序,所以不能假设 Jena 会以任何特定的顺序检索朋友列表。如果需要使用有序列表,Jenabean 将把 Java 数组映射到 RDF 序列。作为演示,我将为 Person 类提供一组电话号码,表示为一个 String 数组,如清单 8 所示:

清单 8. 包含生成的 RDF 的示例数组属性

private String[] phoneNumbers; public String[] getPhoneNumbers() { return phoneNumbers;} public void setP

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号