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

问题描述

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

解决方法

忘记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());
}
您可以在此处找到更多信息。 如果您多描述一些您正在使用的本体以及您需要的搜索类型,我们可能会提供更多帮助。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...