OwlApi。从rdf中提取ObjectProperty

时间:2015-04-13 19:57:51

标签: java sparql owl-api

我试图从.rdf文件中提取所有类和ObjectProperties,这些文件中包含一些rdf三元组。 我正在加载此文件LUBM

OWLOntologyManager manager  = OWLManager.createOWLOntologyManager();
File ontFile = new File("C:\\Ontology\\University0_0.owl");
OWLOntology ont = manager.loadOntologyFromOntologyDocument(ontFile);
StructuralReasonerFactory factory = new StructuralReasonerFactory();
OWLReasoner reasoner = factory.createReasoner(ont);

现在我提取所有课程:

 System.out.println("Class");
 for (OWLClass cls : ont.getClassesInSignature(Imports.EXCLUDED)){
     System.out.println(cls.toString());
 }

现在我提取所有的ObjectProperty:

System.out.println("Role");
for (OWLObjectProperty obp : ont.getObjectPropertiesInSignature()){
    System.out.println(obp.toString());
}

我不需要本体的所有类和属性(LUBM Ontology),但只需要.rdf文件中使用的类和属性。 但是ont.getObjectPropertiesInSignature()返回一个空集。 (我对DBPedia的.rdf文件也有同样的问题。)

我知道我可以使用ont.getObjectPropertiesInSignature(Imports.INCLUDED),但我对本体的属性不感兴趣。

在此之后,我需要使用SPARQL-DL进行一些查询,如果我执行以下查询,则无法获得结果。

SELECT DISTINCT ?x ?y WHERE { 
    PropertyValue(?x, <http://swat.cse.lehigh.edu/onto/univ-bench.owl#takesCourse>, ?y)
}

(我手动探索数据集http://swat.cse.lehigh.edu/onto/univ-bench.owl#takesCourse

但是,如果我使用Jena并使用SPARQL查询执行上述查询,则所有工作都有效。

SELECT DISTINCT ?x ?y 
WHERE{
?x <http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl#takesCourse> ?y.
}

1 个答案:

答案 0 :(得分:0)

我在链接的文件中看不到任何对象属性声明 - 这可能会阻止它们被列出。

请注意,您显示的SPARQL查询具有不同的属性名称空间,因此它们会带来不同的结果并不奇怪。