Rdf OWL程序集生成问题(OWLGrinder)

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

我正在从我的OWL本体构建一个程序集,但在解析本体时,它会在“datatype属性”处引发一条错误消息,其中声明了一个类型并给出了一些值。我已经使用ProtegeV3.4编写了我的本体

例如,引发错误的数据类型属性之一是“Language”,类型为“string”,值为“English&Farsi”。参考文献如下所示,由protege制作:

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