Разбор строки в 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 .
Другие вопросы по тегам