如何推断两个人之间的isBrotherOf属性?

问题描述 投票:6回答:3

我需要推断一个人是另一个人的兄弟,如果他们有同一个父亲。

所以,如果我有这个,

巴特的父亲是霍默

Lisa有父亲Homer

丽莎有父亲荷马,因为 BartLisa 有同一个父亲,我想推断。

丽莎有哥哥巴特

有什么方法可以使用任何属性特征来实现吗?

rdf ontology owl protege
3个回答
9
投票

使用财产链和Rolification

安托万-齐默尔曼的回答 是一个非常好的开端,触及到了解决这类任务的主要点。

从... x 给每个 x'的兄弟们,有一条道路的形式。有父亲o有父亲-1.

不过,这其实不只是兄弟之间的事。 对所有的兄弟姐妹都是如此 x 本身。 这意味着你将有以下的定义。有兄弟姐妹:

有兄弟姐妹≡有父亲o有父亲。-1

(其实,这真的只是 hasPaternalSibling;更精确的定义是使用 hasParent.) 现在,利用这一点,你可以要求兄弟,也就是简单的兄弟姐妹是男人,的。x 的查询,如:(hasSibling值x)和Man

(hasSibling value x) and Man

然而,它 妥帖 有兄弟 财产。 你可以通过财产链和 有兄弟姐妹 如果你有一个特殊的属性,将每个 到自己,而只把雄性与自己联系起来。

hasBrother ≡ hasSibling o specialProperty(兄弟姐妹)

其实,这样的属性是我们从一种叫做 腐化,这在一个问题中已经有了更多的描述。OWL 2 rolification,以及它的答案。 我们的想法是,对于该类 ,我们创建一个新的属性 r 并添加等价物。

人≡r 一些自我

其中说,每个 与自己的关系是 r 财产,而且 只是 的实例 是如此连接。 这正是我们需要的属性,因为 特殊属性 以上。 因此,我们最终得到以下定义。, 有兄弟姐妹有兄弟:

definition of Mandefinition of hasSiblingdefinition of hasBrother

现在,我们可以为兄弟们请求 x 这样的查询。

hasBrother-1 价值x

例如,我们可以要求 格雷格的兄弟姐妹,并得到 彼得, 格雷格 (本人),以及 鲍比.

example of query

样本本体

这是海龟的本体论。

@prefix :      <http://www.example.org/brady#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix brady: <http://www.example.org/brady#> .
@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#> .

brady:hasSibling  a             owl:ObjectProperty ;
        owl:propertyChainAxiom  ( brady:hasFather [ owl:inverseOf
                          brady:hasFather ] ) .

brady:Carol  a  owl:NamedIndividual , brady:Woman .

brady:hasBrother  a             owl:ObjectProperty ;
        owl:propertyChainAxiom  ( brady:hasSibling brady:r_Man ) .

<http://www.example.org/brady>
        a       owl:Ontology .

brady:Woman  a               owl:Class ;
        rdfs:subClassOf      brady:Person ;
        owl:equivalentClass  [ a               owl:Restriction ;
                               owl:hasSelf     true ;
                               owl:onProperty  brady:r_Woman
                             ] .

brady:hasFather  a  owl:ObjectProperty .

brady:Person  a  owl:Class .

brady:Man  a                 owl:Class ;
        rdfs:subClassOf      brady:Person ;
        owl:equivalentClass  [ a               owl:Restriction ;
                               owl:hasSelf     true ;
                               owl:onProperty  brady:r_Man
                             ] .

brady:r_Woman  a  owl:ObjectProperty .

brady:r_Man  a  owl:ObjectProperty .

brady:Marcia  a          owl:NamedIndividual , brady:Woman ;
        brady:hasFather  brady:Mike .

brady:Peter  a           owl:NamedIndividual , brady:Man ;
        brady:hasFather  brady:Mike .

brady:Jan  a             owl:NamedIndividual , brady:Woman ;
        brady:hasFather  brady:Mike .

brady:Cindy  a           owl:NamedIndividual , brady:Woman ;
        brady:hasFather  brady:Mike .

brady:Bobby  a           owl:NamedIndividual , brady:Man ;
        brady:hasFather  brady:Mike .

brady:Greg  a            owl:NamedIndividual , brady:Man ;
        brady:hasFather  brady:Mike .

brady:Mike  a   owl:NamedIndividual , brady:Man .

2
投票

假设每个人都是自己的兄弟 姐妹也是兄弟。

:hasBrother  owl:propertyChainAxiom  (:hasFather [ owl:inverseOf :hasFather ]) .

很难更精确地定义:hasBrother, 排除女性兄弟和自我兄弟关系. 但你可以如下推断丽莎的所有兄弟。

:Female  a  owl:Class .
:Male  a  owl:Class;
  owl:disjointWith  :Female .
:Lisa  a  :Female .
:Bart  a  :Male .
:Homer a  :Male .
:hasFather  a  owl:ObjectProperty;
  rdfs:range  :Male .
:hasBrother a  owl:ObjectProperty;
  rdfs:range  :Male .
:hasSiblingOrSelf  owl:propertyChainAxiom  ( :hasFather [ :hasFather ] ) .
:LisaBrother  owl:equivalentClass  [
    a  owl:Restriction;
    owl:onProperty  [ owl:inverseOf  :hasBrother ];
    owl:hasValue  :Lisa
  ], [
    a  owl:Class;
    owl:intersectionOf  (
      [ a owl:Restriction; owl:onProperty :hasSiblingOrSelf; owl:hasValue :Lisa ]
      :Male
    )
  ] .

0
投票

一种方法是利用SWRL规则.

在protege上。

  1. 进入窗口
  2. 点击标签
  3. 点击Swrl标签
  4. 按 "新建 "按钮,写下以下规则。

写规则。

isChildOf(?x,?y)^FatherOf(?y,?z)^differentFrom(?z,?x)->isBrotherOf(?x,?z)

这意味着,如果 "x是y的孩子","y也是z的父母","z和x是不同的",那么 "z和x是兄弟"。

© www.soinside.com 2019 - 2024. All rights reserved.