我正在尝试使用OpenRDF的Sesame在Java中创建一些语句及其逆语句。我也在关注the tutorial in the Sesame 2.7 documentation。假设我已经创建了以下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工作台中,我可以看到以下语句。我尝试做的是使用OWL.INVERSEOF进行反向操作,以获得由author_1编写的article_1,如下所示:
connection.add(writtenby, OWL.INVERSEOF, wrote);当我运行该项目并返回到OpenRDF工作台时,我看到以下语句:
<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。我做反向操作的方式是错误的,还是我误解了这个概念?非常感谢您提前给予的帮助。
发布于 2014-02-11 06:24:42
就像约书亚说的那样。OpenRDF/Sesame不支持这种推理。我认为它在加载过程中只支持某种基本的RDF/S推理。我认为它也(仍然)不支持自定义规则。
您可以通过将Sesame与OWLIM配合使用来实现所需的功能。OWLIM-Lite和OWLIM-SE支持OWL推理(基于规则、正向链接、物化)。有许多predefined rule sets supported by OWLIM。您可能需要owl-max。
根据您试图实现的目标,您可能希望使用真正的猫头鹰推理器,如Pellet。但是,Sesame不支持Pellet...
https://stackoverflow.com/questions/21686444
复制相似问题