将TurtleSyntax中的字符串解析为OWLClass

时间:2018-05-21 21:00:51

标签: owl owl-api rdfs turtle-rdf

目前我正在尝试通过首先创建Jena OntModel并访问类中的每个语句,从Turtle语法中的字符串创建OWLClass。有没有更好的方法使用Turtle语法中的OWL API创建OWL类?下面是我要解析的字符串。

@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 个答案:

答案 0 :(得分:0)

您尝试解析的字符串不仅包含类 - 它还包含公理。为了成为一个完整的本体论,它只缺乏本体论声明。应该可以通过使用OWLAPI中的一个Turtle解析器解析它直接解析为本体 - 这将是匿名的。

您是否尝试将其解析为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 .