基于两个对象属性的相等性创建OWL子类

时间:2015-02-13 18:23:42

标签: semantic-web owl rdfs

考虑到我在OWL中有A和B类。存在两个不同的对象属性P1和P2,其范围分别是C类和域A和B.

我想创建一个D类,它代表任何包含对象属性P1的A,其值等于B所包含的任何对象属性P2。

是否可以使用OWL来描述这个?

1 个答案:

答案 0 :(得分:3)

  

我想创建一个D类,它代表任何包含a的A.   对象属性P1,其值等于任何对象属性P2   由B包含。

我认为你正在寻找这样的类表达式(在DL和曼彻斯特语法中):

  

D≡A⊓⊓p 1 。(∃p 2 -1 .B)

     

D equivalentClass (A (p1 一些反向(p2)一些 B)))

这表示某个东西是D,当且仅当它是A,并且p1的某个值是某个B实例的p2值。

如果p1和p2的域分别是A和B,那么你实际上可以简化为:

  

D≡∃p 1 .∃p 2 -1

     

D equivalentClass p1 some 反向(p2)某些事情)

这是第一个在OWL的N3 RDF序列化中的样子。

@prefix :      <http://stackoverflow.com/q/28506192/1281433/> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .

:A      a       owl:Class .
:B      a       owl:Class .

:p      a       owl:ObjectProperty .
:q      a       owl:ObjectProperty .

:D      a                    owl:Class ;
        owl:equivalentClass  [ a                   owl:Class ;
                               owl:intersectionOf  ( :A _:b0 )
                             ] .

_:b0    a                   owl:Restriction ;
        owl:onProperty      :p ;
        owl:someValuesFrom  [ a                   owl:Restriction ;
                              owl:onProperty      [ owl:inverseOf  :q ] ;
                              owl:someValuesFrom  :B
                            ] .

如果你有域和范围公理,那么你可以使用更简单的形式,它是:

@prefix :      <http://stackoverflow.com/q/28506192/1281433/> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .

:A      a       owl:Class .
:B      a       owl:Class .

:p      a            owl:ObjectProperty ;
        rdfs:domain  :A .
:q      a            owl:ObjectProperty ;
        rdfs:domain  :B .

:D      a                    owl:Class ;
        owl:equivalentClass  [ a                   owl:Restriction ;
                               owl:onProperty      :p ;
                               owl:someValuesFrom  [ a                   owl:Restriction ;
                                                     owl:onProperty      [ owl:inverseOf  :q ] ;
                                                     owl:someValuesFrom  owl:Thing
                                                   ]
                             ] .