Antoine Zimmermann的答案是解决这个问题的一个很好的开端,并触及了解决这类任务所需要的重点:
从X到每个X的兄弟,有如下形式的路径hasFatheröhasFather -1.
但是,现在,这实际上不仅仅是兄弟.这对所有兄弟姐妹和x本身都是如此.这意味着您将拥有hasSibling的以下定义:
hasSibling≡hasFathero hasFather -1
(实际上,这真的只有hasPaternalSibling ;更精确的定义会使用hasParent.)现在,使用这个,你可以要求兄弟,这些兄弟只是男人的兄弟姐妹,x的查询如下:
(hasSibling值x)和Man
但是,定义一个合适的hasBrother属性会很好.您可以使用属性链和hasSibling执行此操作,如果您有一个将每个Man链接到自己的特殊属性,并且只将males链接到自己:
hasBrother≡hasSiblingo specialProperty
事实上,这种属性就是我们从一种叫做rolification的技术中获得的,这种技术在一个问题,OWL 2 rolification及其答案中有更多的描述.我们的想法是,对于类Man,我们创建一个新属性r Man并添加等价:
男人≡r 男人有些自我
它说,每个人通过与自己[R 男人的财产,而只有实例男人是如此相连.这正是我们上面的specialProperty所需要的属性.因此,我们最终得到了Man,hasSibling和hasBrother的以下定义:

现在我们可以通过以下查询询问x的兄弟:
hasBrother -1值x
例如,我们可以要求格雷格的兄弟姐妹,并得到彼得,格雷格(他自己)和鲍比.

这是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 .
Run Code Online (Sandbox Code Playgroud)