将 ontology 导入 Protege 时出现问题
Issues importing an ontology into Protege
我在所有常见的 ontology 编辑器中导入 "Rhizomik" MPEG7 Ontology 时遇到了一些严重的问题。我主要倾向于与 Protege 一起工作。
导入总是会导致数百个错误。我修复了其中的一些。剩下的一个似乎与以下class有关:
<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>
是否有人能够检查此 class 是否存在任何逻辑错误?
亲切的问候,
帕特里克
问题出在公理的构造上。 subClassOf
公理出现在 class 用法中,但在这些位置不允许使用 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>
这里的意图很明确,但是匿名 class 旨在成为一个交集 - 它不能被这样解析,因为它被创建为嵌套的 subclass 公理,这是无效的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 个类似的问题...
我在所有常见的 ontology 编辑器中导入 "Rhizomik" MPEG7 Ontology 时遇到了一些严重的问题。我主要倾向于与 Protege 一起工作。 导入总是会导致数百个错误。我修复了其中的一些。剩下的一个似乎与以下class有关:
<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>
是否有人能够检查此 class 是否存在任何逻辑错误?
亲切的问候, 帕特里克
问题出在公理的构造上。 subClassOf
公理出现在 class 用法中,但在这些位置不允许使用 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>
这里的意图很明确,但是匿名 class 旨在成为一个交集 - 它不能被这样解析,因为它被创建为嵌套的 subclass 公理,这是无效的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 个类似的问题...