Я пытаюсь извлечь все классы и ObjectProperties из файла .rdf, который cointains rdf triple. я загружаю этот файл LUBMOwlApi. Извлечь ObjectProperty из rdf
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() возвращает пустой набор. (У меня такая же проблема с файлом .rdf из DBPedia.)
Я знаю, что могу использовать 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.
}
Какую версию OWL-API вы используете? – Artemis
Я использую версию 3.0 –
Что вы пытаетесь извлечь точно? Вы приложили два файла совы. Вы хотите, чтобы во втором файле были только свойства объекта? Если да, почему бы вам просто не заменить файл в коде вторым путем? – Artemis