可以将owl:class和owl:限制从限制类定义中删除吗?

Mik*_*ike 4 semantic-web owl turtle-rdf

这些陈述是否相同?如果我删除owl:Restriction和有任何问题owl:Class.它们看起来似乎是多余的,但这总是我在网上看到的例子. owl:onProperty有域名owl:restriction,owl: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 ] )
] .
Run Code Online (Sandbox Code Playgroud)

Ant*_*ann 6

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

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

:myClass  owl:intersectionOf  ( owl:Thing ) .
Run Code Online (Sandbox Code Playgroud)

要求那:myClass是一个owl:Class.考虑一下您给出的示例:

:myClass owl:equivalentClass  
[owl:intersectionOf  (
  [ owl:onProperty :hasProp ; owl:allValuesFrom  :SomeOtherClass ]
  [ owl:onProperty :hasProp ; owl:someValuesFrom :SomeOtherClass ] )
] .
Run Code Online (Sandbox Code Playgroud)

一方面,: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 ]
    )
] .
Run Code Online (Sandbox Code Playgroud)

和:

# 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 ]
        )
    ] .
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,Protégé决定将其解释:hasProp为对象属性,而它可能是一个数据类型属性.

最后,为了回答这个问题,我注意到如果owl:Restriction完全丢弃该类型,RDF中的本体仍然被曼彻斯特OWL 2验证器识别为有效的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 ]
    )
  ] .
Run Code Online (Sandbox Code Playgroud)

编辑:我刚检查了OWL 2规范,看来上面的RDF图应该归类为OWL 2 DL本体文档.但是,在这个特定的例子中,实体的类型没有歧义.