Rdf 不是';匿名类是否自动成为owl:Class的一种类型?

Rdf 不是';匿名类是否自动成为owl:Class的一种类型?,rdf,owl,semantic-web,protege,hermit,Rdf,Owl,Semantic Web,Protege,Hermit,这个本体论似乎并不完全符合我的想法: @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://ww

这个本体论似乎并不完全符合我的想法:

@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
  )
] .
好奇为什么我需要添加
rdf:type owl:Class

  • […]
    不是自动属于类型
    owl:Class
  • 或者是两个owl:Class的交集,让它成为这样

  • 感谢您在第一个代码片段中的介绍,很明显交集必须是OWL类,因为它是OWL类的交集。因此,
    :CClass
    也必须是OWL类。然而,这意味着一些基于术语定义的推理。OWL解析器不必应用推理,应该明确地指向术语是OWL类、对象属性、数据类型属性、个体、本体、注释属性、数据类型还是其他类型的注释。在
    owl:intersectionOf
    axiom的情况下,您可能是在声明一个数据类型,而不是一个owl类。因此,只有通过查看列表的内容,并找到其中的术语是如何声明的(即,
    :AClass
    :BClass
    ),才能最终推断它们都是OWL类,因此交叉点是OWL类,因此它相当于OWL类,因此,
    :CClass
    应该或可能在编辑器中显示为OWL类。为了健壮性,OWL工具可以自由地进行这种推断,但OWL标准并不强制要求这样做


    编辑澄清:该标准定义了一种将RDF图映射到OWL抽象语法的方法,其中使用
    OWL:intersectionOf
    的构造可以映射到类定义或数据类型定义。该标准建议区分这两种情况的唯一方法是明确添加
    rdf:type owl:Class
    rdf:type rdfs:Datatype
    (见本标准表12和13)。OWL解析器可能会超出标准建议的范围,并根据上下文推断某些类型,但它们不必这样做。我知道OWLAPI做了一些这样的语法推断,以避免在每个无效的本体上崩溃。

    我在Protege中运行了“隐士”推理程序。所以这个结果不仅仅基于解析器分析@ignazio指出,这与将RDF映射到OWL有关,因为如果使用函数语法,问题不会发生。他在评论中提到了这一点,我请他把这一点写进一个答案中,这样我就可以接受。这个评论的答案和这个答案都指出了相关的信息。我会接受这个答案,因为我唯一能补充的是,在这种情况下,解析器需要这里描述的三元组:不同的解析器对规范的遵守程度不同,为了方便用户,可能会尝试推断类型。但是,如果可能的话,最好是消除歧义——在本例中,添加显式类型triple。我所说的推理方式与OWL推理机所做的不同。我的意思是,当您在OWL本体文件中有一个类似于
    :AClass
    的语法标记时,解析器必须知道它是在命名一个类、一个属性、一个实例还是其他东西,然后才能开始进行OWL语义意义上的推理。可以通过显式声明(例如,
    :AClass a owl:Class
    )或基于语法上下文的推理来确定令牌扮演的角色。谢谢。额外的澄清确实有所帮助。
    .
    .
    .
    
    # Class 1
    :CClass owl:equivalentClass [
      rdf:type owl:Class ;
      owl:intersectionOf (
        :AClass
        :BClass
      )
    ] .