匿名 类 不是自动成为 owl:Class 的一种吗?
Aren't anonymous classes automatically a type of owl:Class?
这个 ontology 似乎不太符合我的想法:
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix : <http://test/> .
:AClass a owl:Class .
:BClass a owl:Class .
# Class 1
:CClass owl:equivalentClass [
owl:intersectionOf (
:AClass
:BClass
)
] .
用隐士推理器加载这个我不认为 CClass
是 AClass
或 BClass
的子 class。但是以下工作:
.
.
.
# Class 1
:CClass owl:equivalentClass [
rdf:type owl:Class ;
owl:intersectionOf (
:AClass
:BClass
)
] .
想知道为什么我需要添加 rdf:type owl:Class
。
-
[ ... ]
不是自动属于 owl:Class
类型吗?
- 或者是两个
owl:Class
的交集?
谢谢
在您的第一个片段中,很明显交集必须是 OWL class,因为它是 OWL class 的交集。因此,:CClass
也必须是一个 OWL class。然而,这意味着一些基于术语定义的推理。 OWL 解析器不必应用推理,应该明确地指示术语是否是 OWL class、对象 属性、数据类型 属性 、个体、ontology、注解属性、数据类型或某种其他类型的注解。在 owl:intersectionOf
公理的情况下,您可能正在声明数据类型,而不是 OWL class。所以只有通过查看列表的内容,并找到其中的项是如何声明的(即 :AClass
和 :BClass
),你最终可以推断它们都是 OWL classes,因此交集是 OWL class,因此它等价于 OWL class,因此 :CClass
应该或可能在编辑器中显示为 OWL class。 OWL 工具可以出于稳健性的目的自由进行此类推断,但 OWL 标准并未强制要求。
编辑澄清: 该标准定义了一种将 RDF 图映射到 OWL 的抽象语法的方法,其中使用 owl:intersectionOf
的结构可以是映射到 class 定义或数据类型定义。标准建议区分这两种情况的唯一方法是明确添加 rdf:type owl:Class
或 rdf:type rdfs:Datatype
(请参阅 OWL 2 Web Ontology Language Mapping to RDF Graphs 的表 12 和表 13)。 OWL 解析器可能会超出标准建议的范围,并根据上下文推断某些类型,但他们不必这样做。我知道 OWL API 做了一些这样的句法推断以避免在每个无效本体上崩溃。
这个 ontology 似乎不太符合我的想法:
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix : <http://test/> .
:AClass a owl:Class .
:BClass a owl:Class .
# Class 1
:CClass owl:equivalentClass [
owl:intersectionOf (
:AClass
:BClass
)
] .
用隐士推理器加载这个我不认为 CClass
是 AClass
或 BClass
的子 class。但是以下工作:
.
.
.
# Class 1
:CClass owl:equivalentClass [
rdf:type owl:Class ;
owl:intersectionOf (
:AClass
:BClass
)
] .
想知道为什么我需要添加 rdf:type owl:Class
。
-
[ ... ]
不是自动属于owl:Class
类型吗? - 或者是两个
owl:Class
的交集?
谢谢
在您的第一个片段中,很明显交集必须是 OWL class,因为它是 OWL class 的交集。因此,:CClass
也必须是一个 OWL class。然而,这意味着一些基于术语定义的推理。 OWL 解析器不必应用推理,应该明确地指示术语是否是 OWL class、对象 属性、数据类型 属性 、个体、ontology、注解属性、数据类型或某种其他类型的注解。在 owl:intersectionOf
公理的情况下,您可能正在声明数据类型,而不是 OWL class。所以只有通过查看列表的内容,并找到其中的项是如何声明的(即 :AClass
和 :BClass
),你最终可以推断它们都是 OWL classes,因此交集是 OWL class,因此它等价于 OWL class,因此 :CClass
应该或可能在编辑器中显示为 OWL class。 OWL 工具可以出于稳健性的目的自由进行此类推断,但 OWL 标准并未强制要求。
编辑澄清: 该标准定义了一种将 RDF 图映射到 OWL 的抽象语法的方法,其中使用 owl:intersectionOf
的结构可以是映射到 class 定义或数据类型定义。标准建议区分这两种情况的唯一方法是明确添加 rdf:type owl:Class
或 rdf:type rdfs:Datatype
(请参阅 OWL 2 Web Ontology Language Mapping to RDF Graphs 的表 12 和表 13)。 OWL 解析器可能会超出标准建议的范围,并根据上下文推断某些类型,但他们不必这样做。我知道 OWL API 做了一些这样的句法推断以避免在每个无效本体上崩溃。