【发布时间】:2011-08-05 21:07:40
【问题描述】:
我正在尝试使用现有的本体从 XML 文件中提取 RDF 三元组。我正在使用 Java,并且可以使用 XPath 从 XML 和 Jena 中提取数据来读取和写入 RDF 文档和本体。如何根据现有本体从XML中提取相关三元组?
【问题讨论】:
标签: java rdf jena semantic-web owl
我正在尝试使用现有的本体从 XML 文件中提取 RDF 三元组。我正在使用 Java,并且可以使用 XPath 从 XML 和 Jena 中提取数据来读取和写入 RDF 文档和本体。如何根据现有本体从XML中提取相关三元组?
【问题讨论】:
标签: java rdf jena semantic-web owl
忘记使用 XPath 来提取三元组,使用 Jena 更容易且问题更少。
您可以将界面 SimpleSelector 与 Jena 的 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。
如果您详细描述您正在使用的本体以及您需要的搜索类型,我们可能会提供更多帮助。
【讨论】: