Rdf OWL程序集生成问题(OWLGrinder)
我正在从我的OWL本体构建一个程序集,但在解析本体时,它会在“datatype属性”处引发一条错误消息,其中声明了一个类型并给出了一些值。我已经使用ProtegeV3.4编写了我的本体 例如,引发错误的数据类型属性之一是“Language”,类型为“string”,值为“English&Farsi”。参考文献如下所示,由protege制作:Rdf OWL程序集生成问题(OWLGrinder),rdf,owl,ontology,rowlex,Rdf,Owl,Ontology,Rowlex,我正在从我的OWL本体构建一个程序集,但在解析本体时,它会在“datatype属性”处引发一条错误消息,其中声明了一个类型并给出了一些值。我已经使用ProtegeV3.4编写了我的本体 例如,引发错误的数据类型属性之一是“Language”,类型为“string”,值为“English&Farsi”。参考文献如下所示,由protege制作: <rdf:RDF xml:base="http://www.owl-ontologies.com/Ontology1243411901.owl" xm
<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#">
每次我按下“生成”按钮时,“\ubNode”前面的数字都会改变。
通过从“Language”属性中删除值,会发生与下一个数据类型属性相关的另一个错误。这意味着定义的每个数据类型属性(以及为其指定的某些值)都在OWLGrinder中出错
我想知道是否有人可以指导我处理这个错误。我复制/粘贴了你的本体:它说这个本体(至少)不是OWL lite本体。您的Protege配置可能有问题?我不熟悉OWLGrinder,但您可以尝试声明一个命名类,例如
ExpectedLanguages
(为您的匿名节点提供一个URI),然后将其用作语言
谓词的范围。缩写示例(格式):
您对的使用要求您的代码/解析器/推理器至少符合OWL-DL
\ubnodexxx
(空白节点/匿名节点)每次都有一个新ID的原因是它是空白的。但是,为了在内存中的RDF图(模型)中识别它,需要在加载每个匿名节点时为其生成ID,以便在每个节点(匿名或命名)分析模型时生成ID可以唯一标识,以便可以标识其传入和传出引用。当前,OwlGrinder希望范围为文字或常规类。我建议创建一个“LanguageList”包装类,其中包含枚举,并将其指定为一个范围。我没有测试这个,但我确实希望它能工作 提供了一个SDK,可以将OWL-Lite、OWL-Full或OWL-DL转换为.NET类。你可能想看看这个
旁注我认为您混淆了本体中领域的语义。似乎你是想说“语言可能只存在于教师、课程、学习资源、讨论、学生”而实际上你是在说“如果用语言来描述一个实例,那么这个实例可以推断为教师、课程、学习资源、讨论和学生的联合体。”。这是对OWL语义的一种常见误解,因为它感觉域应该限制属性的使用,而实际上这从来不是OWL的功能(模式/验证)。OWL仅用于描述应该通过用法推断出的内容,它不规定用法 通过在语言属性域中使用UnionOf,您表示“使用语言属性描述的任何内容都是教师、课程、学习资源、讨论或学生”。我认为这通常没有意义 范围与此类似,如果将属性的范围定义为特定类型,则可以推断该属性引用的所有文本/资源都是使用范围声明定义的类型
你好,皮埃尔,非常感谢您的回答。我将我的整个本体粘贴到该验证器站点中,该站点将其验证为OWL-DL。猫头鹰研磨机是否仅适用于猫头鹰Lite?有没有其他工具可以从本体中进行组装?非常感谢Phil M先生。从你的回答中我可以学到很多东西。这个问题可以通过为每个数据类型范围创建一个类来解决。非常感谢您的回答。这个问题可以通过为每个数据类型范围创建一个类来解决。
<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>
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?
:ExpectedLanguages
a owl:DataRange ;
owl:oneOf (
"Farsi"^^xsd:string
"English"^^xsd:string
);
.
:languages
rdfs:range :ExpectedLanguages ;
.