gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 14:01:27 24 4
gpt4 key购买 nike

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

所以,如果我有这个:

Bart hasFather Homer.

Lisa hasFather Homer.



因为 BartLisa有同样的父亲,我想推断:

Lisa hasBrother Bart.



有没有任何方法可以使用任何属性特征来做到这一点?

最佳答案

使用属性(property)链和轮转

Antoine Zimmermann's answer是这个问题的一个很好的开端,并且触及了解决此类任务所需的主要观点:

From x to each of x's brothers, there is a path of the form hasFather o hasFather-1.



不过,现在,这实际上不仅仅适用于兄弟。对于所有 sibling 和 x 本身都是如此。这意味着您将拥有以下 hasSibling 定义:

hasSibling ≡ hasFather o hasFather-1



(实际上,这实际上只是 hasPaternalSibling;更精细的定义将使用 hasParent。)现在,使用它,您可以使用以下查询查询 x 的兄弟,这些兄弟只是男性的 sibling :

(hasSibling value x) and Man



然而,定义一个合适的 hasBrother 属性会很好。如果您有一个特殊的属性将每个人与他自己联系起来,并且只将男性与他们自己联系起来,那么您可以使用属性链和 hasSibling 来做到这一点:

hasBrother ≡ hasSibling o specialProperty



事实上,这样的属性是我们从称为 rollification 的技术中得到的,这在问题 OWL 2 rolification 中有更多描述。 ,以及它的答案。这个想法是,对于类 Man,我们创建一个新的属性 rMan 并添加等价:

Man ≡ rMan some Self



它说每个 Man 都通过 rMan 属性与他自己相关,并且只有 Man 的实例如此相关。这正是我们上面作为 specialProperty 所需要的属性。因此,我们最终得到 Man、hasSibling 和 hasBrother 的以下定义:

definition of Man
definition of hasSibling
definition of hasBrother

现在我们可以使用如下查询来询问 x 的兄弟:

hasBrother-1 value x



例如,我们可以要求 Greg 的 sibling ,并得到 Peter、Greg(他自己)和 Bobby。

example of query

示例本体

这是 Turtle 中的本体:
@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 .

关于rdf - 如何推断两个人之间的 isBrotherOf 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19559651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com