将 TurtleSyntax 中的字符串解析为 OWLClass

Parsing string in TurtleSyntax to OWLClass

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

@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 .

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

您是否尝试过将其解析为 OWLOntology

String in = "...";
StringDocumentSource input = new StringDocumentSource(in);
OWLOntologyManager m = OWLManager.createOWLOntologyManager();
OWLOntology o = m.loadOntologtFromOntologyDocument(input);

列出公理或遍历 ontology 的签名应该为您提供足够的结构来推进您的工作。

旁注:这两行好像少了一个点:

p0:safetyGoal_3  a       rdfs:Class , p1:SafetyGoalVersion ;
rdfs:subClassOf  p1:SafetyGoal ;

应该有句号允许解析:

p0:safetyGoal_3  a       rdfs:Class , p1:SafetyGoalVersion ;
rdfs:subClassOf  p1:SafetyGoal .