如果 - 那么使用OWL句话代表?(Representing if-then sentence us

2019-09-02 14:36发布

我与基本OWL工作,这是很容易表示一些简单的句子,如“孙悟空是个讲师,他教数学”。

例如:

<owl:Class rdf:ID="Lecturer"></owl:Class>
<owl:Class rdf:ID="Subject"></owl:Class>
<owl:Property rdf:ID="teach">
   <rdfs:domain rdf:resource="#Lecturer"/>
   <rdfs:range rdf:resource="#Subject"/>
</owl:Property>

<Subject rdf:ID="Maths"></Subject>
<Lecturer rdf:ID="Songoku">
    <teach>
        <Subject rdf:about="#Maths"></Subject>
    </teach>
</Lecturer>

但我面临的一个问题,当我试图代表这句话: 鲍勃是一个学生,如果Bob有5只狗,那么他至少有1猫咪。

你能告诉我一些建议吗?

Answer 1:

您可以使用代表一般子类公理OWL一些相当复杂的条件句。 让我们来看看几个例子。 如果你试图东西有点简单,说

Students with at least five dogs have at least one cat.

这是量化条件“对于所有的x速记, 如果 x是至少五只狗的学生, x具有至少一只猫,你可以做到这一点的OWL

(Student and hasPet min 5 Dog) subClassOf (hasPet some Cat)

这些都是匿名类表达式,但你可以定义一些等价类做一些事情变得更简单:

StudentWithAtLeastFiveDogs equivalentClass (Student and hasPet min 5 Dogs)
CatOwner equivalentClass (hasPet some Cat)
StudentWithAtLeastFiveDogs subClassOf CatOwner

现在,你的例子是鲍勃是一个学生,如果Bob有5只狗,那么他至少有1猫咪。 有两句话在那里。 第一容易被编码

Bob a Student

第二个是一个比较复杂一点。 你说Bob是类的东西,如果他们至少有五只狗中的一员,他们拥有至少一只猫。 A(材料)有条件的“若P则Q”是逻辑上等同于析取“(不是P)或Q”。 因此,我们说,鲍勃是类的东西,要么至少有五个点或那些至少有一个猫的成员。 对于该类表达是

(not (hasPet min 5 Dog)) or (hasPet some Cat)

现在,我们对鲍勃的知识是,

Bob a Student
Bob a (not (hasPet min 5 Dog)) or (hasPet some Cat)

您可以定义为匿名类表达的等价类,但我怀疑它会在大多数语言很自然地呈现。 下面是含有鲍勃知识本体的样子(在N3格式 ):

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

<http://www.example.com/example>
      a       owl:Ontology .
:Cat  a       owl:Class .
:Student
      a       owl:Class .
:Dog  a       owl:Class .
:hasPet
      a       owl:ObjectProperty .
:Bob  a       :Student , owl:NamedIndividual ;
      a       [ a       owl:Class ;
                owl:unionOf ([ a       owl:Class ;
                            owl:complementOf
                                    [ a       owl:Restriction ;
                                      owl:minQualifiedCardinality
                                              "5"^^xsd:nonNegativeInteger ;
                                      owl:onClass :Dog ;
                                      owl:onProperty :hasPet
                                    ]
                          ] [ a       owl:Restriction ;
                            owl:onProperty :hasPet ;
                            owl:someValuesFrom :Cat
                          ])
              ] .

同样的方法也可以用于数据类型的属性和它们的值的限制。 例如,说“如果Bob至少重60公斤,那么他至少是身高180cm,”我们可以说,鲍勃是一类事物的元素,如果他们体重至少60千克,那么他们至少身高180cm,或等价地,类的东西,要么重量至少60千克,或者是至少180厘米高。 在曼彻斯特的语法,类表情的样子

(not (hasWeight some int[>= 60])) or (hasHeight some int[>= 180])

从本体的N3序列的相关部分是:

:Bob  a       [ a       owl:Class ;
                owl:unionOf ([ a       owl:Class ;
                            owl:complementOf
                                    [ a       owl:Restriction ;
                                      owl:onProperty :hasWeight ;
                                      owl:someValuesFrom
                                              [ a       rdfs:Datatype ;
                                                owl:onDatatype xsd:int ;
                                                owl:withRestrictions
                                                        ([ xsd:minInclusive 60
                                                          ])
                                              ]
                                    ]
                          ] [ a       owl:Restriction ;
                            owl:onProperty :hasHeight ;
                            owl:someValuesFrom
                                    [ a       rdfs:Datatype ;
                                      owl:onDatatype xsd:int ;
                                      owl:withRestrictions
                                              ([ xsd:minInclusive 180
                                                ])
                                    ]
                          ])
              ] .


Answer 2:

这是一个文本Attempto受控英语(ACE) :

Bob is a student. If Bob has 5 dogs then Bob has at least 1 cat.

并且它在OWL这种表示:

ClassAssertion(
  :student
  :Bob
)
SubClassOf(
  ObjectIntersectionOf(
     ObjectOneOf(
        :Bob
     )
     ObjectMinCardinality(
        5
        :have
        :dog
     )
  )
  ObjectSomeValuesFrom(
     :have
     :cat
  )
)

它可以自动地与被计算ACE解析器(APE) 。 所以,如果你已成功地概念化的声明以英文,这是值得检查,如果该ACE解析器可以自动映射它OWL,看到的ACE解析器的在线演示 。



文章来源: Representing if-then sentence using OWL?
标签: ontology owl