2015-04-13 1 views
0

Я пытаюсь извлечь все классы и 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. 
} 
+0

Какую версию OWL-API вы используете? – Artemis

+0

Я использую версию 3.0 –

+0

Что вы пытаетесь извлечь точно? Вы приложили два файла совы. Вы хотите, чтобы во втором файле были только свойства объекта? Если да, почему бы вам просто не заменить файл в коде вторым путем? – Artemis

ответ

0

Я не вижу никакой декларации свойства объекта в файле, который вы связали - это, вероятно, остановит их перечисление.

Обратите внимание, что запрошенные SPARQL-запросы имеют разные пространства имен для свойств, поэтому неудивительно, что они возвращают разные результаты.

+0

Да, ошибка в запросе SPARLQ-DL. Также с точным IRI запрос ничего не возвращает. Но «ub: worksFor», «ub: teacherOf», «ub: takeCourse», ... ect не является свойством? –

+0

Первая ссылка не имеет декларации свойств объекта, второй файл имеет и 'teacherOf' - свойство объекта. – Artemis

+0

Итак, если мне нужен запрос с SPARQL-DL с указанным выше запросом, мне нужно импортировать в свой объект OWLOntology файл в первой ссылке и файл во второй ссылке. Правильно? –