Разбор строки в TurtleSyntax для OWLClass
В настоящее время я пытаюсь создать OWLClass из строки в синтаксисе Turtle, сначала создав Jena OntModel и посетив каждый оператор в классе. Есть ли лучший способ создать OWL Class с использованием OWL API из синтаксиса Turtle? Ниже приведена строка, которую я пытаюсь разобрать.
@prefix p0: <http://rdf.test.com/dl_reasoning/> .
@prefix p1: <http://rdf.test.com/ns/test_rm#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
p0:safetyGoal_1 a rdfs:Class , p1:SafetyGoal ;
rdfs:subClassOf p1:SafetyGoal ;
p1:fulfilledBy p0:fsr_fuel , p0:fsr_coo .
p0:safetyGoal_3 a rdfs:Class , p1:SafetyGoalVersion ;
rdfs:subClassOf p1:SafetyGoal ;
p0:safetyGoal_2 a rdfs:Class , p1:SafetyGoalVersion ;
rdfs:subClassOf p1:SafetyGoal ;
p1:fulfilledBy p0:fsr_fuel ;
p1:fulfills p0:fsr_coo .
1 ответ
Строка, которую вы пытаетесь проанализировать, содержит не только классы, но и аксиомы. Чтобы быть полной онтологией, в ней отсутствует только декларация онтологии. Должна быть возможность проанализировать это прямо в онтологии - которая была бы анонимной - проанализировав ее с одним из парсеров Turtle в OWLAPI.
Вы пытались разобрать это к OWLOntology
?
String in = "...";
StringDocumentSource input = new StringDocumentSource(in);
OWLOntologyManager m = OWLManager.createOWLOntologyManager();
OWLOntology o = m.loadOntologtFromOntologyDocument(input);
Перечисление аксиом или повторение подписи онтологии должно предоставить вам достаточно структуры для продвижения вперед в вашей работе.
Примечание: в этих двух строках отсутствует точка:
p0:safetyGoal_3 a rdfs:Class , p1:SafetyGoalVersion ;
rdfs:subClassOf p1:SafetyGoal ;
Должна быть полная остановка, чтобы разрешить анализ:
p0:safetyGoal_3 a rdfs:Class , p1:SafetyGoalVersion ;
rdfs:subClassOf p1:SafetyGoal .