Jenabean:将JavaBeans轻松绑定到RDF - 编程入门网
quot;);
article.setCreator("Philip McCarthy");
article.setTitle("Introduction to Jena");
article.setSubject("jena, rdf, java, semantic web");
writer.save(article);
m.write(System.out, "N3");
我在这里另外包含了 m.write(...,"N3") 行。您可以使用本文附带的代码(请参阅 下载)亲自尝试。 清单 2 和 清单 3 有明显的不同,但 Jena 模型产生了几乎相同的变化。它们都创建了 清单 1 中三元组的一个超集。清单 2 通过调用 m.createClass(...) 声明了一篇新的文章。清单 3 通过创建 Article — new Article(...) 类的一个新实例实现同样的操作。没有使用 Jenabean,每个属性断言要求您从模型访问属性、创建一个字母并通过调用 setPropertyValue(...) 将声明断言到模型。使用 Jenabean 的 Bean2RDF 转换器,您可以仅调用 JavaBean 的 setter 方法。清单 3 产生了对大多数 Java 开发人员来说非常熟悉的代码。 OOP 到 RDF 的绑定 如您所见,Jenabean 的主要优势是填补了 Java 对象和 RDF 之间的差异。这允许您使用与域模型相同的 bean 以熟悉的 OOP 风格编写语义 Web 应用程序。但这并不是说 Java 对象和 RDF 完全相同。Java 对象和 RDF 以不同的方式表示数据。一个好的绑定工具必须解决以下三个问题。 对象到 RDF 的阻抗不匹配 通常开发人员只关心将一个本体(ontology)复制为一组 Java 对象。Java 对象和 OWL 类之间不存在一对一的关联。OWL 允许多重继承,允许许多类分享相同的属性并允许属性之间相互继承。另外,像关系数据库管理系统(RDBMS)一样,对象和 RDF 在一些方面相似而在其他方面不同。这使我们需要在 Java 代码中生成并使用 RDF。许多工具采用代码生成方法,这些方法涉及读取 RDF 模式或 OWL 本体并在 Java 语言中复制类和属性。这类工具不能实现从现有的 JavaBean 类中断言普通的 RDF 属性。RDF 绑定工具能让您将一个 JavaBean 属性与一个 RDF 属性 URI 随意关联(假设它们的类型兼容)。 浅(shallow)对深(deep) 任何绑定工具都需要解决的另一个问题是一个对象图(object graph)能够实现多大程度的持久化。将对象保存在一个密集的、具有大量连接的对象图中将导致持久化整个模型。装载也会出现类似的情形。绑定工具必须阻止将完整的 RDF 模型作为 JavaBeans 装载到内存中,但在必要时允许实现这个特性。 循环 循环关系对于 RDF 和对象模型非常常见。在进行持久化和装载时,绑定工具必须能够检测和处理循环。显然,它应该防止无限循环,而且它应该检测以前装载的对象并通过重用这些对象来节省时间。 Jenabean 解决了这三个问题,同时尽量使该过程保持简单。它不需要代码生成阶段、字节码生成步骤,或者实时的字节码处理库。它仅需要 Jena 和它的库。Jenabean 默认使用一种保守策略来保存对象及其直接属性。开发人员必须表明他们希望实现 “深度” 拷贝,以便完整地保存对象及相关内容。或者使用另一种方法,即指定要保存或装载某个实例的特定集合属性。 为 RDF 创建 JavaBeans 如果您熟悉 Hibernate 或其他绑定工具,您也许希望知道在哪里发生这些操作。Jenabean 使用 Java 注释来声明 bean 如何映射到 RDF。正如其他基于注释的绑定层一样,当您的模型由 Java 对象驱动时,Jenabean 最为有用。当然并不会总出现这种情况,但是如果是这样的话,Jenabean 就可以提供帮助。 Jenabean:将JavaBeans轻松绑定到RDF(3)时间:2011-02-13 IBM Taylor Cowan最简单的工作示例 Jenabean 提供了许多功能来定制 bean 如何序列化为 RDF,但是如果默认设置符合您的要求,那么就可以开始快速编写和读取 bean。让我们创建一个简单的 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |