OWL集生成问题(OWLGrinder)
题
我从我的OWL本体构建器组件,但是解析本体时,它提出了在其中类型声明并给出一些值“数据类型属性”的错误消息。我使用的Protege V3.4写我的本体。
例如,该引发错误的数据类型属性之一是“语言”与类型“串”和值,如“英语及波斯语”。的参考文献在下面列出,通过被保护人制成:
<rdf:RDF xml:base="http://www.owl-ontologies.com/Ontology1243411901.owl"
xmlns="http://www.owl-ontologies.com/Ontology1243411901.owl#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:protege="http://protege.stanford.edu/plugins/owl/protege#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:swrl="http://www.w3.org/2003/11/swrl#"
xmlns:swrlb="http://www.w3.org/2003/11/swrlb#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:xsp="http://www.owl-ontologies.com/2005/08/07/xsp.owl#">
和下面的 “语言” 属性中提到:
<owl:DatatypeProperty rdf:ID="language">
<rdfs:range>
<owl:DataRange>
<owl:oneOf rdf:parseType="Resource">
<rdf:rest rdf:parseType="Resource">
<rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
<rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Farsi</rdf:first>
</rdf:rest>
<rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string">English</rdf:first>
</owl:oneOf>
</owl:DataRange>
</rdfs:range>
<rdfs:domain>
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<owl:Class rdf:about="#Teacher"/>
<owl:Class rdf:about="#ClassOfCourse"/>
<owl:Class rdf:about="#LearningResource"/>
<owl:Class rdf:about="#Discussion"/>
<owl:Class rdf:about="#Student"/>
</owl:unionOf>
</owl:Class>
</rdfs:domain>
</owl:DatatypeProperty>
我只添加一个本体到OWLGrinder。产生当由这个错误:
Assembly generation failed.
OWL property 'http://www.owl-ontologies.com/Ontology1243411901.owl#language' has a range declaration that points to _:bnode10579059 but its definition is missing.
Are you missing an ontology which declares this class?
在前面的数字“_:B节点”每个I按下“生成”按钮改变一次。 通过从“语言”属性删除值,另一个错误发生相关的下一个数据类型属性。这意味着,被定义(并且具有指定给它的一些值)每DataType属性在OWLGrinder制造误差。
我在想,如果有人能指导我HANDELING这个错误。
解决方案
目前 ROWLEX OwlGrinder预计的范围内是文字或规则类。我建议创建一个包含枚举“LanguageList包装类中指定,作为一个范围。我没有测试这一点,但我不希望它的工作。
其他提示
我不熟悉OWLGrinder,但你可以尝试声明名为类如ExpectedLanguages
(给你的匿名节点的URI),然后使用它作为您的language
谓词的范围内。缩写的例子(在龟格式):
:ExpectedLanguages
a owl:DataRange ;
owl:oneOf (
"Farsi"^^xsd:string
"English"^^xsd:string
);
.
:languages
rdfs:range :ExpectedLanguages ;
.
您使用 OWL枚举类型要求您的代码/解析器/推理是OWL-DL至少兼容。
究其原因,_:bnodeXXX
(空白节点/匿名节点)具有一个新的ID每次是因为它是空白的。然而,对于在存储器中的RDF图(模型)内识别它的目的,一个ID需要用于当它被加载以便当模型被分析的每个节点(匿名或命名),每个匿名节点中产生可以被唯一标识因此它的传入和传出的引用可以被识别。
Intellidimension 提供了可转换OWL-精简版,OWL-完全,或OWL-DL到SDK .NET类。你可能想看看那个。
<强>旁注强>结果 我想你混淆了域的语义在你的本体。看来,你是想说,“语言只能在老师,ClassOfCourse,LearningResource,讨论,学生存在”的时候,其实你说的“如果语言是用来描述一个实例的实例可以推断是UnionOf教师,ClassOfCourse,LearningResource,讨论和学生。“这是OWL的语义的共同误解,因为它感觉像域应该限制一个属性使用的时候,其实不是永远OWL(模式/验证)的功能。 OWL是仅用于描述什么应该由使用推断,它没有规定使用。
通过在语言属性的域名通过unionOf你是说“正在使用该语言属性描述什么是老师,或者ClassOfCourse,或LearningResource,或讨论,或学生”。我认为,这不是一般意义。
如果定义了属性的范围是一个特定类型的比它可以推断,由该属性中提到的所有文字/资源是与所述范围声明中定义的类型的区段是在相似的。
我在 http://www.mygrid.org复制/粘贴你的本体。英国/ OWL /验证:它说,这个本体是(至少)不是一个OWL-精简版的本体。这可能是你的门徒配置有问题?