2014-02-10 40 views
0

我想用OpenRDF的芝麻在Java中創建一些語句及其反轉。我也跟着the tutorial in the Sesame 2.7 documentation。比方說,我已經創建瞭如下的URI和聲明,並將它們添加到庫芝麻:如何在Java中使用使用Openrdf的OWL.INVERSEOF

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工作臺,我看到下面的語句:

<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。我這樣做的方式是錯誤的嗎?還是我誤解了這個概念?提前感謝您的幫助。

+1

我不真的使用OpenRDF或芝麻,所以我不熟悉這些工具,但通常如果你有'apb'和'p owl:inverseOf q' ,你需要一個推理者來獲得三重「bqa」。你的系統中是否存在執行推理的內容? –

+0

謝謝你的回覆。不,我沒有推理的表現。如何應用這個?請問你能賜教嗎?先謝謝你。 – user2864315

回答

2

正如約書亞所說。 OpenRDF /芝麻不支持這種推理。我認爲它只支持某種基本的RDF/S推理。它也(還)不支持我認爲的自定義規則。

您可以通過使用芝麻OWLIM來實現您的要求。 OWLIM-Lite和OWLIM-SE確實支持OWL推理(基於規則,前向鏈接,物化)。有一些predefined rule sets supported by OWLIM。你可能會想要owl-max

根據您試圖達到的目標,您可能需要使用一個真正的OWL推理器,如Pellet。然而,芝麻不支持Pellet ...

+1

使用顆粒的Stardog(stardog.com)確實支持芝麻。 – Michael

+0

更新'自定義規則'備註:Sesame現在支持自定義推理的SPIN(SPARQL Inferencing Notation)。 –