5
我想通過使用現有的本體從XML文件中提取RDF三元組。我正在使用Java,並且可以使用XPath從XML和Jena中提取數據來讀寫RDF文檔和本體。根據現有的本體,我如何從XML中提取相關的三元組?如何使用現有的本體從XML文件中提取RDF三元組?
我想通過使用現有的本體從XML文件中提取RDF三元組。我正在使用Java,並且可以使用XPath從XML和Jena中提取數據來讀寫RDF文檔和本體。根據現有的本體,我如何從XML中提取相關的三元組?如何使用現有的本體從XML文件中提取RDF三元組?
忘掉XPath來提取三元組,這對Jena來說更容易和更少問題。
您可以使用Jena的接口SimpleSelector
和model.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。
如果您更詳細地描述了您正在使用的本體和您需要的搜索類型,我們可能會提供更多幫助。
關於爲什麼[不使用XPath與RDF或OWL一起工作](http://stackoverflow.com/a/17052385/1281433)幾年後的幾個筆記。 – 2014-01-25 13:35:08