【问题标题】:Issues importing an ontology into Protege将本体导入 Protege 的问题
【发布时间】:2017-04-26 13:43:35
【问题描述】:

我在所有常见的本体编辑器中导入“Rhizomik”MPEG7 本体时遇到了一些严重问题。我主要倾向于与 Protege 合作。 导入总是会导致几个 100 错误。我修复了其中的一些。剩下的一个似乎与以下类有关:

<owl:Class rdf:about="&mpeg7;SpatioTemporalLocatorType">
    <rdfs:subClassOf>
        <owl:Class>
            <owl:intersectionOf rdf:parseType="Collection">
                <owl:Restriction>
                    <owl:onProperty rdf:resource="&mpeg7;CoordRef"/>
                    <owl:allValuesFrom>
                        <owl:Class>
                            <rdfs:subClassOf>
                                <owl:Restriction>
                                    <owl:onProperty rdf:resource="&mpeg7;ref"/>
                                    <owl:allValuesFrom rdf:resource="&xsd;string"/>
                                </owl:Restriction>
                            </rdfs:subClassOf>
                            <rdfs:subClassOf>
                                <owl:Restriction>
                                    <owl:onProperty rdf:resource="&mpeg7;ref"/>
                                    <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
                                </owl:Restriction>
                            </rdfs:subClassOf>
                            <rdfs:subClassOf>
                                <owl:Restriction>
                                    <owl:onProperty rdf:resource="&mpeg7;spatialRef"/>
                                    <owl:allValuesFrom rdf:resource="http://www.w3.org/2001/XMLSchema&mpeg7;boolean"/>
                                </owl:Restriction>
                            </rdfs:subClassOf>
                            <rdfs:subClassOf>
                                <owl:Restriction>
                                    <owl:onProperty rdf:resource="&mpeg7;spatialRef"/>
                                    <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
                                </owl:Restriction>
                            </rdfs:subClassOf>
                        </owl:Class>
                    </owl:allValuesFrom>
                </owl:Restriction>
                <owl:Class>
                    <owl:unionOf rdf:parseType="Collection">
                        <owl:Restriction>
                            <owl:onProperty rdf:resource="&mpeg7;FigureTrajectory"/>
                            <owl:allValuesFrom rdf:resource="&mpeg7;FigureTrajectoryType"/>
                        </owl:Restriction>
                        <owl:Restriction>
                            <owl:onProperty rdf:resource="&mpeg7;ParameterTrajectory"/>
                            <owl:allValuesFrom rdf:resource="&mpeg7;ParameterTrajectoryType"/>
                        </owl:Restriction>
                        <owl:Restriction>
                            <owl:onProperty rdf:resource="&mpeg7;MediaTime"/>
                            <owl:allValuesFrom rdf:resource="&mpeg7;MediaTimeType"/>
                        </owl:Restriction>
                    </owl:unionOf>
                </owl:Class>
            </owl:intersectionOf>
        </owl:Class>
    </rdfs:subClassOf>
</owl:Class>

是否有人可以检查此类是否存在任何逻辑错误?

亲切的问候, 帕特里克

【问题讨论】:

  • 请提供您看到的错误 - 至少其中几个。否则,提供帮助是非常非常困难的。
  • 您好,Protege 生成“ErrorXXX”类,但不包含更多信息。我能够将其中一个追溯到上面的 xml 摘录。我希望有人能够在课堂上看到逻辑错误...
  • ErrorXXX 表示 OWL 语法本身存在问题。您应该在解析期间从 OWLAPI 获得一些日志消息。
  • 很难检查这个片段的语法错误——你能提供整个本体,或者在完整本体的上下文中提供这段代码的完整sn-p,以便可以轻松地复制错误吗?
  • 嗨,Ignazio,Protege 在其控制台窗口中没有生成任何有用的信息。本体相当长。提取上述 sn-p 中涉及的所有部分将是一团糟。可从此处获得:rhizomik.net/ontologies/2005/03/Mpeg7-2001.owl

标签: rdf owl ontology protege


【解决方案1】:

问题在于公理的构造。 subClassOf 公理出现在类用法中,但在这些位置中不允许使用 rdfs:subClassOf 标记(请参阅 https://www.w3.org/TR/owl2-mapping-to-rdf/ 了解已识别的映射)。

例如,Error1 URL 引用了这个公理:

ObjectPropertyRange(<#Mpeg7> <http://org.semanticweb.owlapi/error#Error1>)

对应的XML是:

<owl:ObjectProperty rdf:ID="Mpeg7">
    <rdfs:range>
        <owl:Class>
            <rdfs:subClassOf rdf:resource="&mpeg7;Mpeg7Type"/>
            <rdfs:subClassOf>
                <owl:Class>
                    <owl:unionOf rdf:parseType="Collection">
                        <owl:Restriction>
                            <owl:onProperty rdf:resource="#DescriptionUnit"/>
                            <owl:allValuesFrom rdf:resource="&mpeg7;Mpeg7BaseType"/>
                        </owl:Restriction>
                        <owl:Restriction>
                            <owl:onProperty rdf:resource="#Description"/>
                            <owl:allValuesFrom rdf:resource="&mpeg7;CompleteDescriptionType"/>
                        </owl:Restriction>
                    </owl:unionOf>
                </owl:Class>
            </rdfs:subClassOf>
        </owl:Class>
    </rdfs:range>
</owl:ObjectProperty>

这里的意图很明确,但是匿名类的目的是作为一个交集——它不能被解析,因为它是作为嵌套的子类公理创建的,这不是有效的 OWL 语法。

当上面的样例改成这样时:

<owl:ObjectProperty rdf:ID="Mpeg7">
    <rdfs:range>
        <owl:Class>
            <owl:intersectionOf rdf:parseType="Collection">
                <rdf:Description rdf:about="&mpeg7;Mpeg7Type"/>
                <owl:Class>
                    <owl:unionOf rdf:parseType="Collection">
                        <owl:Restriction>
                            <owl:onProperty rdf:resource="#DescriptionUnit"/>
                            <owl:allValuesFrom rdf:resource="&mpeg7;Mpeg7BaseType"/>
                        </owl:Restriction>
                        <owl:Restriction>
                            <owl:onProperty rdf:resource="#Description"/>
                            <owl:allValuesFrom rdf:resource="&mpeg7;CompleteDescriptionType"/>
                        </owl:Restriction>
                    </owl:unionOf>
                </owl:Class>
            </owl:intersectionOf>
        </owl:Class>
    </rdfs:range>
</owl:ObjectProperty>

解析出来的公理变成了

ObjectPropertyRange(<#Mpeg7>
    ObjectIntersectionOf(
        <http://rhizomik.net/ontologies/2005/03/Mpeg7-2001.owl#Mpeg7Type>
        ObjectUnionOf(
            ObjectAllValuesFrom(<#Description> <http://rhizomik.net/ontologies/2005/03/Mpeg7-2001.owl#CompleteDescriptionType>)
            ObjectAllValuesFrom(<#DescriptionUnit> <http://rhizomik.net/ontologies/2005/03/Mpeg7-2001.owl#Mpeg7BaseType>)
        )
    )
)

我在文件中统计了大约 175 个类似的问题...

【讨论】:

  • 谢谢伊格纳齐奥。这有助于理解到底发生了什么。我同时联系了本体的作者。他打算自己解决这个问题。对于我自己的项目,我切换到另一个多媒体本体。再次感谢,祝您有愉快的一天。
猜你喜欢
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-02
相关资源
最近更新 更多