semantic-web - 可以猫头鹰 :class and owl:restriction be removed from restriction class definitions?

标签 semantic-web owl turtle-rdf

这些陈述是否相同?如果我删除 owl:Restriction 会有什么问题吗?和 owl:Class .它们似乎多余,但这总是我在网上看到的例子。 owl:onProperty有域名owl:restrictionowl:restriction是子类owl:class .

:myClass owl:equivalentClass  
[a owl:Class ;
          owl:intersectionOf (
          [ a owl:Restriction ; owl:onProperty :hasProp  ; owl:allValuesFrom  :SomeOtherClass ]
          [ a owl:Restriction ; owl:onProperty :hasChild ; owl:someValuesFrom :SomeOtherClass ] ) ] .



:myClass owl:equivalentClass  
[owl:intersectionOf  (
  [ owl:onProperty :hasProp ; owl:allValuesFrom  :SomeOtherClass ]
  [ owl:onProperty :hasProp ; owl:someValuesFrom :SomeOtherClass ] )
] .

最佳答案

好问题。您需要指定这些类型的原因是由于从 RDF 图到 OWL (2) 本体的映射。在 OWL 2 本体中,每个实体都必须显式地类型化为类、对象属性、数据类型属性、注释属性、数据类型或本体。为了确保在 OWL 本体的所有 RDF 序列化中解决此约束,必须明确键入本体引入的所有资源,包括与限制、交集等相关联的这些空白节点。

话虽如此,在很多情况下,显式类型并不是真正有用的,因为可以从其他三元组中推断出类型。例如:

:myClass  owl:intersectionOf  ( owl:Thing ) .

要求 :myClassowl:Class .考虑你给出的例子:
:myClass owl:equivalentClass  
[owl:intersectionOf  (
  [ owl:onProperty :hasProp ; owl:allValuesFrom  :SomeOtherClass ]
  [ owl:onProperty :hasProp ; owl:someValuesFrom :SomeOtherClass ] )
] .

一方面,:myClass必须是一个类,因为 owl:equivalentClass ;列表中的两个空白节点必然是owl:Restriction , 因为使用了谓词 owl:onProperty ;这意味着带有 owl:intersectionOf 的空白节点属性必然是一个类。

另一方面,不清楚是否:SomeOtherClass是类还是数据类型,因为不知道是否:hasProp是对象属性或数据类型属性。所以在这里你会遇到是否显式键入会产生影响的情况。

现在,真正的问题可能是:“我真的需要明确地将这些类型付诸实践吗?”我想说,这取决于您使用的工具。大多数 OWL 处理器会将许多不兼容的 RDF 图解释为有效的 OWL 本体,但您必须小心,因为可能会发生意外。例如,我尝试在 Protégé 中打开一个包含您提供的示例的文件。 Protégé 没有设法将内容解释为定义任何类或属性。然而,问题并不是因为缺少 owl:Restriction或失踪的 owl:Class对于空白节点。如果我只是为 :myClass 添加一个显式类型,然后 Protégé 将内容解释为定义了两个类、一个对象属性和一个关于 :myClass 的公理。 .相比:
# This does not work in Protégé 4.3
@prefix : <http://ex.com/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .

:myClass owl:equivalentClass [
    owl:intersectionOf  (
        [ owl:onProperty :hasProp; owl:allValuesFrom  :SomeOtherClass ]
        [ owl:onProperty :hasProp; owl:someValuesFrom :SomeOtherClass ]
    )
] .

和:
# This works in Protégé 4.3
@prefix : <http://ex.com/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .

:myClass a owl:Class;
    owl:equivalentClass [
        owl:intersectionOf  (
            [ owl:onProperty :hasProp; owl:allValuesFrom  :SomeOtherClass ]
            [ owl:onProperty :hasProp; owl:someValuesFrom :SomeOtherClass ]
        )
    ] .

出人意料的是,Protégé决定解读:hasProp作为对象属性,而它可能是数据类型属性。

最后,总结一下这个答案,我注意到如果你丢弃 owl:Restriction完全类型,RDF 中的本体仍然被 Manchester OWL 2 validator 认为是有效的 OWL 2 DL 本体。 .试试这个作为输入:
@prefix : <http://ex.com/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .

:SomeOtherClass a owl:Class .
:hasProp a owl:ObjectProperty .
:myClass a owl:Class;
  owl:equivalentClass [
    owl:intersectionOf  (
      [ owl:onProperty :hasProp; owl:allValuesFrom  :SomeOtherClass ]
      [ owl:onProperty :hasProp; owl:someValuesFrom :SomeOtherClass ]
    )
  ] .

编辑:我刚刚检查了 OWL 2 规范,上面的 RDF 图似乎应该被归类为 OWL 2 DL 本体文档。然而,在这个特定的例子中,实体的类型没有歧义。

关于semantic-web - 可以猫头鹰 :class and owl:restriction be removed from restriction class definitions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21951485/

相关文章:

semantic-web - 具有精确基数的属性是一个函数吗?

rdf - 我可以说 RDF Schema (RDFS) 是 RDF 的本体吗?

java - 如何在 Apache(不是 Tomcat)服务器上执行基于 Java 的 OWL 推理器?

java - Jena、RDF 和 Jade 实现

sparql - 使用SPARQL查询RDF时方括号 "[]"的含义?

semantic-web - OWL Protege-5.0如何将Object Property的范围设置为外部Ontology类

database - 没有 FROM 关键字的 Sparql

java - Apache Jena 中的公理

owl - Reasoner 设置两个不同的类,彼此等价,并且与 owl :Thing

rdf - @base 和空前缀之间的海龟区别