如何区分描述表示对象的OWL属性和描述表示的属性?

时间:2016-04-13 09:53:34

标签: rdf owl ontology

如何区分描述所表示对象的OWL属性和描述该表示的属性。这是一个小例子:

:fgst1425 rdf:type :Building ,
                   owl:NamedIndividual ;

          rdfs:label "B28"@en ;

          :isWorkLocationOf :hugr9807 ; #this is a property of the building

          :hasURItype :ihuy8965 . #this is a property of the URI representing the building


:hugr9807 rdf:type :Person ,
                   owl:NamedIndividual ;

          rdfs:label "Ivo"@en .

:ihuy8965 rdf:type owl:NamedIndividual ,
                   owl:Thing ;

          rdfs:label "OpaqueURI"@en .

以类似的方式,描述访问权限的属性可以表示对建筑物的访问以及对表示建筑物的URI的读取访问权。

目的是为表示的对象和表示使用推理。如果我有一个被爆炸杀死的人,并且这个爆炸是用URI注册的,我想说只有满足特定条件的人才能访问这个URI,并且让reasoners找出谁是非法访问,但是避免扣除URI杀人的排序。

我想到的一个可能的解决方案是将所有元数据属性放在:metaDataProperty下,然后使用SPARQL查询可以区分两种不同类型的语句。

建议的另一种方法是对元数据使用单独的本体。

你会建议什么?

1 个答案:

答案 0 :(得分:2)

  

如何区分描述所表示对象的OWL属性和描述该表示的属性。

这是OWL没有做出的明显区别。制作这个本体的人做了一些可能被认为有点不寻常的事情。而

:hasURItype :ihuy8965 . #this is a property of the URI representing the 

建筑

可能是“关于表示”,就OWL而言,它只是建筑物的另一个属性。毕竟,根据

:ihuy8965 rdf:type owl:NamedIndividual , owl:Thing ;

价值只是另一个有名的个人。

然而,可能可能有一件事,这取决于本体设计师所做的事情。 OWL允许您定义三种类型的属性:

  • 对象属性
  • 数据类型属性
  • 注释属性

前两个对象和数据类型属性是OWL reasoners使用的属性,应该代表数据的实际含义。第三种类型,注释属性是一种“额外”数据。本体设计者可能已将:hasURItype 定义为注释属性,以表示其值不是推理所需的;也就是说,它们是对“真实”数据的注释。如果是这种情况,那么你可以做类似的事情:

construct { ?s ?p ?o }
where {
  values ?s { :fgst1425 }
  ?s ?p ?o .
  filter not exists {
    ?p rdf:type owl:AnnotationProperty
  }
}

排除已声明为注释属性的属性。但是,我们没有足够的数据来了解这种方法是否适用于此。

更新

根据对问题的更新,我认为您可能想要创建一个新的注释属性,以区分属性是否为“表示属性”。例如,

:isRepresentationProperty a owl:AnnotationProperty

然后您的属性定义可以考虑到这一点:

:isWorkLocationOf a owl:ObjectProperty .

:hasURItype a owl:ObjectProperty ;
            :isRepresentationProperty true .

然后,您可以将SPARQL查询更新为:

construct { ?s ?p ?o }
where {
  values ?s { :fgst1425 }
  ?s ?p ?o .
  filter not exists {
    ?p :isRepresentationProperty true 
  }
}