我需要通过ObjectProperty将Individual连接到Class,但不能,因为OWL-DL不允许它。这有解决方法吗?

时间:2013-05-05 12:48:45

标签: owl

我正在构建一个描述某些Web服务的本体。我应该如何在OWL-DL中表达以下OWL-Full语句:

:Service         a           owl:Class
:Location        a           owl:Class        

:hasInputType    rdfs:domain :Service
:hasInputType    rdfs:range  owl:Class

:Service1        a               :Service
:Service1        :hasInputType   :Location

3 个答案:

答案 0 :(得分:1)

正如您所提到的,使用OWL-DL无法在类和个人之间创建关系。因此,您必须修改表示域知识的方式,如果您希望能够使用reasoners,这是唯一的解决方案。

此处服务实例可以链接到位置实例,或者您也可以使用类而不是个人来描述特定服务。然后,您可以使用存在性限制在Service1Location之间创建关系。

使用个人的例子:

:hasInput rdf:type owl:ObjectProperty ;
      rdfs:domain :Service .

:Location rdf:type owl:Class .

:Service rdf:type owl:Class .

:Location1 rdf:type :Location , owl:NamedIndividual .

:Service1 rdf:type :Service , owl:NamedIndividual ;
      :hasInput :Location1 .

使用类的示例:

:hasInput rdf:type owl:ObjectProperty ;
      rdfs:domain :Service .

:Location rdf:type owl:Class .

:Service rdf:type owl:Class .

:Service1 rdf:type owl:Class .

      rdfs:subClassOf :Service ,
                      [ rdf:type owl:Restriction ;
                        owl:onProperty :hasInput ;
                        owl:someValuesFrom :Location
                      ] .

答案 1 :(得分:1)

要说Service1的任何输入必须是Location,但不暗示任何此类输入必须存在,那么您可以再向Service1添加一个类型,即通用对hasInput的{​​{1}}进行限制。

Location

这表示forall :Service1 a owl:NamedIndividual , :Service ; a [ a owl:Restriction ; owl:allValuesFrom :Location ; owl:onProperty :hasInput ] . if x然后 Service1 hasInput x。它并不意味着x a Location存在x

答案 2 :(得分:1)

在OWL 2 DL中,您可以使用类名作为个人名称。这被称为“双关语”。所以以下是有效的OWL 2 DL:

:InputType     a              owl:Class .
:Service       a              owl:Class .
:Location      a              owl:Class, :InputType .

:hasInputType  a              owl:ObjectProperty;
               rdfs:domain    :Service;
               rdfs:range     :InputType .

:Service1      a              :Service;
               :hasInputType  :Location .

你甚至可以摆脱课程:InputType而只需使用owl:Thing。请注意,第三行实际上定义了两个术语:一个名为:Location的类和一个名为:Location的个体。这些是两个不同的术语