从本体创建Java类

10

我有一个本体文件(以RDF格式),用于表达我正在编写的应用程序中的实体。我正在使用Jena,并且可以通过直接操作三元组来访问概念并创建/访问资源。

为了使事情更加容易,我创建了一组Java类,针对本体中的每种资源类型创建一个类,考虑到它们的继承和属性。例如:

public class Agent{
}

并且

public class Person extends Agent{
  private String name;
}

如果本体包含两种资源类型,AgentPerson,其中后者是前者的子类。

我意识到创建这些类(以及提取它们的方法)的过程非常单调。如果我正在编写关于数据库的应用程序,我会使用Hibernate的配置文件来处理细节。

我的问题是:是否有可用的工具可以将本体(在RDF文件中)作为输入,并创建一组Java文件来表示本体中的概念,就像上面的示例那样? (或者Jena本身可以做到这一点,而我却错过了什么)

谢谢。


我认为它们必须是接口,因为一个实例可以拥有 FlyingThing、Animal、Black 等类型。问题在于它无法处理继承属性值。 - Thien
4个回答

2

有一些工具,例如BoumlAndromda,您可以使用它们从XMI UML序列化生成Java代码。

此外,已经进行了将UML与RDF集成的工作:http://infolab.stanford.edu/~melnik/rdf/uml/

因此,我想您可以找到一种方法将您的RDF转换为XMI,然后从XMI生成Java代码,前提是您首先将初始的RDF模式映射到RDF/UML。

此外,我刚刚发现了这篇论文:OWL本体自动映射为Java,但我没有阅读,因此无法评论。


1

Protege支持RDF导入和Java导出。我过去曾经使用它将本体数据导入到Java程序中,效果还不错。


谢谢。我理解你的意思是使用http://sharon.cselt.it/projects/jade/doc/tutorials/beangenerator/beangenerator.html上的BeanGenerator插件。我会尝试一下。 - Animesh

1

在查看上面提供的链接时,我偶然发现了Trispresso Project,它提供了相关工具及其功能的良好概述,包括多重继承和代码生成。我认为这会是对我的问题一个不错的答案。


0

你有没有看过JRDF?还有其他的代码生成工具可供选择...在这里查看here


从JRDF页面“未来的功能可能包括: 一种RDF到Java对象API(类似于Hibernate或Sesame的Elmo),”所以我认为这还不支持。将查看其他页面中的RDFReactor,Kazuki和Owl2Java。 - Animesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接