繁体   English   中英

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

[英]Can owl:class and owl:restriction be removed from restriction class definitions?

这些陈述是否相同? 如果我删除owl:Restrictionowl: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)Ontology的映射。 在OWL 2本体中,每个实体必须显式地键入为类,对象属性,数据类型属性,注释属性,数据类型或本体。 为了确保在OWL本体的所有RDF序列化中解决该约束,必须明确键入本体引入的所有资源,包括与限制,交叉点等相关联的这些空白节点。

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

:myClass  owl:intersectionOf  ( owl:Thing ) .

要求:myClass是一个owl: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验证器识别为有效的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本体文档。 但是,在这个特定的例子中,实体的类型没有歧义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM