如何设置通用owl对象关系

时间:2014-07-15 14:06:38

标签: rdf semantic-web owl description-logic

警告:新手问题。

我试图模拟(作为一个简化的例子)狗与一组与狗相关的类的相关数值,例如“蓬松”。我很困惑如何表示特定类型(例如狗)相对于另一种类型(例如,蓬松度)采用特定数值。例如:

:Dog rdf:type owl:Class .
:Fluffiness rdf:type owl:Class .
:describedBy rdf:type owl:ObjectProperty ;
             rdfs:domain :Dog ;
             rdfs:range :Fluffiness .
:hasValue rdf:type owl:DatatypeProperty ;
          rdfs:domain :Fluffiness ;
          rdfs:range :&xsd;float .

:Chihuahua rdf:type :Dog .

如何将吉娃娃与狗的一般属性(例如Fluffiness)的具体值(例如0.1)联系起来?有没有办法做到这一点,而不是只是将Fluffiness作为一个类并定义一个“hasFluffiness”数据类型属性?

1 个答案:

答案 0 :(得分:4)

目前,您的陈述有效,但在我看来,这有点令人费解。最终得到的实例数据如下:

Chihuahua describedBy fluffiness72 .
fluffiness72 hasValue 4.

正如您所说,您可以使用hasFluffiness数据类型属性,但如果您不想这样做,我认为您最好的选择是拥有属性类,其中包含蓬松大小友善等都是实例。然后,您可以拥有 AttributeValue 类和属性属性(您可以提供更好的名称),以便您编写数据像这样:

:chihuahua62 rdf:type :Chihuahua ;
             :hasAttributeValue [ :attribute :Fluffiness   ; :value 3 ] ;
             :hasAttributeValue [ :attribute :Friendliness ; :value 2 ] . 

通过这种表述,你可以说“每只奇瓦瓦的绒毛水平都低于4”:

  

((∃hasAttributeValue -1 .Chihuahua)⊓(= attribute.Fluffiness))⊑⊑value.xsd:float [≤4.0]

     

((反向(hasAttributeValue)一些 Chihuahua)(属性蓬松度)) SubClassOf (值 xsd:float [< = 4.0])

在英语中,这表示对于属性蓬松的奇瓦瓦州的每个 AttributeValue 必须具有小于4.0的值。

您可以使用替代表示“如果Chihuahua具有属性值,那么如果属性为Fluffiness,那么该值小于4.0”。这相当于“如果Chihuahua有一个属性值,那么该属性 Fluffiness,或者该值小于4.0”:

  

Chihuahua⊑⊑hasAttributeValue。(¬(= attribute.Fluffiness)⊔(∀value.xsd:float [≤4.0]))

这更容易写入本体编辑器,因为它是关于你感兴趣的类的子类公理。

这是一个显示两种方法的本体论:

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

:Shagginess  a  owl:NamedIndividual , :Attribute .

:hasValue  a         owl:DatatypeProperty ;
        rdfs:domain  :_attVal .

[ a                   owl:Class ;
  rdfs:subClassOf     [ a                  owl:Restriction ;
                        owl:allValuesFrom  [ a                     rdfs:Datatype ;
                                             owl:onDatatype        xsd:float ;
                                             owl:withRestrictions  ( [ xsd:minInclusive
                                                               10 ] )
                                           ] ;
                        owl:onProperty     :hasValue
                      ] ;
  owl:intersectionOf  ( [ a                   owl:Restriction ;
                          owl:onProperty      [ owl:inverseOf  :hasAttributeValue ] ;
                          owl:someValuesFrom  :Newfoundland
                        ] [ a               owl:Restriction ;
                            owl:hasValue    :Shagginess ;
                            owl:onProperty  :hasAttribute
                          ] )
] .

:Newfoundland  a         owl:Class ;
        rdfs:subClassOf  :Dog .

:Attribute  a   owl:Class .

:_attVal  a     owl:Class .

:hasAttribute  a     owl:ObjectProperty ;
        rdfs:domain  :_attVal ;
        rdfs:range   :Attribute .

:Chihuahua  a            owl:Class ;
        rdfs:subClassOf  :Dog ;
        rdfs:subClassOf  [ a                  owl:Restriction ;
                           owl:allValuesFrom  [ a            owl:Class ;
                                                owl:unionOf  ( [ a                 owl:Class ;
                                                                 owl:complementOf  [ a               owl:Restriction ;
                                                                                     owl:hasValue    :Shagginess ;
                                                                                     owl:onProperty  :hasAttribute
                                                                                   ]
                                                               ] [ a                  owl:Restriction ;
                                                                   owl:allValuesFrom  [ a                     rdfs:Datatype ;
                                                                                        owl:onDatatype        xsd:float ;
                                                                                        owl:withRestrictions  ( [ xsd:maxInclusive
                                                                                                          4 ] )
                                                                                      ] ;
                                                                   owl:onProperty     :hasValue
                                                                 ] )
                                              ] ;
                           owl:onProperty     :hasAttributeValue
                         ] .

:hasAttributeValue  a  owl:ObjectProperty ;
        rdfs:range  :_attVal .

:Dog    a       owl:Class .

<http://stackoverflow.com/q/24760392/1281433/dogProperties>
        a       owl:Ontology .