2011-04-14 105 views

回答

9

忘掉XPath來提取三元組,這對Jena來說更容易和更少問題。

您可以使用Jena的接口SimpleSelectormodel.listStatements

在此示例中,我使用SimpleSelector來查找所有具有單個屬性的三元組,但可以通過自定義方法selects來實現所需的任何搜索。

FileManager fManager = FileManager.get(); 
Model model = fManager.loadModel("some_file.rdf"); 

Property someRelevantProperty = 
    model. createProperty("http://your.data.org/ontology/", 
          "someRelevantProperty"); 

SimpleSelector selector = new SimpleSelector(null, null, (RDFNode)null) { 
    public boolean selects(Statement s) 
     { return s.getPredicate().equals(someRelevantProperty);} 
} 

StmtIterator iter = model.listStatements(selector); 
while(it.hasNext()) { 
    Statement stmt = iter.nextStatement(); 
    System.out.print(stmt.getSubject().toString()); 
    System.out.print(stmt.getPredicate().toString()); 
    System.out.println(stmt.getObject().toString()); 
} 

您會找到更多信息here

如果您更詳細地描述了您正在使用的本體和您需要的搜索類型,我們可能會提供更多幫助。

+0

關於爲什麼[不使用XPath與RDF或OWL一起工作](http://stackoverflow.com/a/17052385/1281433)幾年後的幾個筆記。 – 2014-01-25 13:35:08

相關問題