如何使用现有本体从XML文件中提取RDF三元组



我试图通过使用现有本体从XML文件中提取RDF三元组。我正在使用Java,并且可以使用XPath从XML和Jena中提取数据,以读写RDF文档和本体。如何根据现有的本体从XML中提取相关的三元组?

忘记用XPath提取三元组吧,用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());
}

你可以在这里找到更多信息。

如果你多描述一点你正在使用的本体和你需要的搜索类型,我们可能能够帮助更多。