0

我正在尝试使用 OpenRDF 的 Sesame 在 Java 中创建一些语句及其逆语句。我也在关注Sesame 2.7 文档中的教程。假设我创建了以下 URI 和语句并将它们添加到 Sesame 存储库:

RepositoryConnection connection;
ValueFactory factory = ValueFactoryImpl.getInstance(); 
Resource author_1 = new createURI("http://www.author.org/author_1");
Resource article_1 = new createURI("http://www.title.org/article_1");
URL wrote = factory.createURI("http://www.paper.org/wrote");
URL writtenby = factory.createURI("http://www.paper.org/writtenby");
Statement statement_1 = factory.createStatement(author_1, wrote, article_1);
connection.add(statement_1);

上面的代码用于创建一个声明来描述作者写了一篇文章。在 OpenRDF Workbench 中,我可以看到这条语句。我想要做的是做相反的使用来OWL.INVERSEOF获取它,如下所示:article_1author_1

connection.add(writtenby, OWL.INVERSEOF, wrote);

当我运行项目并返回 OpenRDF Workbench 时,我看到以下语句:

<http://www.author.org/author_1>, http://www.paper.org/wrote, http://www.title.org/article_1>
<http://www.paper.org/writtenby>, <http://www.w3.org/2002/owl#inverseOf>, <http://www.paper.org/wrote>

当我点击 时<http://www.paper.org/writtenby>,我找不到相反的陈述,article_1 is written by author1但我可以找到author_1 wrote article_1。我做这个逆向的方式是错误的还是我误解了这个概念?非常感谢您提前提供的帮助。

4

1 回答 1

2

正如约书亚所说。OpenRDF/Sesame 不支持这种推理。我认为它在加载期间仅支持某种基本的 RDF/S 推理。它也(仍然)不支持我认为的自定义规则。

您可以通过使用 Sesame 和OWLIM来实现您的要求。OWLIM-Lite 和 OWLIM-SE 确实支持 OWL 推理(基于规则、前向链接、物化)。OWLIM 支持许多预定义的规则集。你可能会想要owl-max.

根据您要实现的目标,您可能想要使用真正的 OWL 推理器,例如 Pellet。但是,Sesame 不支持 Pellet...

于 2014-02-10T22:24:42.287 回答