Rdf 猫头鹰如何表达兄弟姐妹有共同的父母?

Rdf 猫头鹰如何表达兄弟姐妹有共同的父母?,rdf,semantics,semantic-web,owl,Rdf,Semantics,Semantic Web,Owl,我用海龟符号写了一个简单的文件,其中戴夫是玛丽的父亲,玛丽是杰克的妹妹。我想知道戴夫有两个孩子杰克和玛丽的原因 :Human a rdfs:Class . :Man rdfs:subClassOf :Human ; owl:disjointWith :Woman . :Woman rdfs:subClassOf :Human ; owl:disjointWith :Man . :hasChild a rdf:Property ; owl:inverseOf :hasParent

我用海龟符号写了一个简单的文件,其中戴夫是玛丽的父亲,玛丽是杰克的妹妹。我想知道戴夫有两个孩子杰克和玛丽的原因

:Human a rdfs:Class .

:Man rdfs:subClassOf :Human ;
  owl:disjointWith :Woman .
:Woman rdfs:subClassOf :Human ;
  owl:disjointWith :Man .


:hasChild a rdf:Property ;
  owl:inverseOf :hasParent ;
  rdfs:domain :Human ;
  rdfs:range :Human.

:fatherOf owl:InverseFunctionalProperty rdf:Property ;
  owl:inverseOf :hasFather ;
  rdfs:subPropertyOf :hasChild ;
  rdfs:domain :Man ;
  rdfs:range :Human.

:motherOf owl:InverseFunctionalProperty rdf:Property ;
  owl:inverseOf :hasMother ;
  rdfs:subPropertyOf :hasChild ;
  rdfs:domain :Woman ;
  rdfs:range :Human.


:siblingOf a owl:SymmetricProperty, owl:TransitiveProperty ;
  owl:inverseOf :hasSibling ;
  rdfs:domain :Human ;
  rdfs:range :Human.

:brotherOf a rdf:Property ;
  owl:inverseOf :hasBrother ;
  rdfs:subPropertyOf :siblingOf ;
  rdfs:domain :Man ;
  rdfs:range :Human.

:sisterOf a rdf:Property ;
  owl:inverseOf :hasSister ;
  rdfs:subPropertyOf :siblingOf ;
  rdfs:domain :Woman ;
  rdfs:range :Human.



[] rdf:type owl:Axiom ;
   owl:subject    :Man ;
   owl:predicate  rdfs:subClassOf ;
   owl:object     :Human ;
   rdfs:label     "States that every man is a human."^^xsd:string .

[] rdf:type owl:Axiom ;
   owl:subject    :Woman ;
   owl:predicate  rdfs:subClassOf ;
   owl:object     :Human ;
   rdfs:label     "States that every woman is a human."^^xsd:string .


:Dave a :Man .

:Jack a :Man ;
   :hasSister :Mary .

:Mary a :Woman ;
   :hasFather :Dave .
我读过,但仍然不明白如何表达这个简单的事实

戴夫是玛丽的父亲,玛丽是杰克的妹妹。我想知道戴夫有两个孩子杰克和玛丽的原因

:Human a rdfs:Class .

:Man rdfs:subClassOf :Human ;
  owl:disjointWith :Woman .
:Woman rdfs:subClassOf :Human ;
  owl:disjointWith :Man .


:hasChild a rdf:Property ;
  owl:inverseOf :hasParent ;
  rdfs:domain :Human ;
  rdfs:range :Human.

:fatherOf owl:InverseFunctionalProperty rdf:Property ;
  owl:inverseOf :hasFather ;
  rdfs:subPropertyOf :hasChild ;
  rdfs:domain :Man ;
  rdfs:range :Human.

:motherOf owl:InverseFunctionalProperty rdf:Property ;
  owl:inverseOf :hasMother ;
  rdfs:subPropertyOf :hasChild ;
  rdfs:domain :Woman ;
  rdfs:range :Human.


:siblingOf a owl:SymmetricProperty, owl:TransitiveProperty ;
  owl:inverseOf :hasSibling ;
  rdfs:domain :Human ;
  rdfs:range :Human.

:brotherOf a rdf:Property ;
  owl:inverseOf :hasBrother ;
  rdfs:subPropertyOf :siblingOf ;
  rdfs:domain :Man ;
  rdfs:range :Human.

:sisterOf a rdf:Property ;
  owl:inverseOf :hasSister ;
  rdfs:subPropertyOf :siblingOf ;
  rdfs:domain :Woman ;
  rdfs:range :Human.



[] rdf:type owl:Axiom ;
   owl:subject    :Man ;
   owl:predicate  rdfs:subClassOf ;
   owl:object     :Human ;
   rdfs:label     "States that every man is a human."^^xsd:string .

[] rdf:type owl:Axiom ;
   owl:subject    :Woman ;
   owl:predicate  rdfs:subClassOf ;
   owl:object     :Human ;
   rdfs:label     "States that every woman is a human."^^xsd:string .


:Dave a :Man .

:Jack a :Man ;
   :hasSister :Mary .

:Mary a :Woman ;
   :hasFather :Dave .
如果忽略兄弟姐妹具有不同父级的可能性(例如,一个共同的父级和一个不同的父级),则可以使用子角色链执行此操作。如果您有以下数据:

戴夫和右箭头;有孩子的玛丽和右箭头;易怒的杰克

然后您需要使用以下规则:

hasChild•hasSibling&SqSubsetq;孩子

这将允许您推断:

戴夫和右箭头;孩子杰克

在海龟身上,看起来像这样:

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

a:Jack  a       owl:NamedIndividual .

a:Dave  a           owl:NamedIndividual ;
        a:hasChild  a:Mary .

a:hasChild  a                   owl:ObjectProperty ;
        owl:propertyChainAxiom  ( a:hasChild a:hasSibling ) .

a:Mary  a             owl:NamedIndividual ;
        a:hasSibling  a:Jack .

a:hasSibling  a  owl:ObjectProperty .

a:      a       owl:Ontology .
@前缀:。
@前缀a:。
@前缀rdf:。
@前缀owl:。
@前缀xsd:。
@前缀rdfs:。
杰克:猫头鹰:名字是个人。
a:Dave猫头鹰:名字是个人;
a:有孩子a:玛丽。
a:hasChild a owl:ObjectProperty;
猫头鹰:不动产海纳西姆(a:有孩子a:有麻烦)。
a:玛丽是一只猫头鹰:名字是个人;
a:麻烦a:杰克。
a:与owl:ObjectProperty发生冲突。
答:猫头鹰:本体论。
以下是Protege得出的结论:


你可能会发现这很有用,尽管这不是你问题的确切答案。我们知道由于及物性
Mary:hasSibling-Mary
Mary:hasSibling-Jack
的缘故,
Mary:hasSibling-Mary
Jack:hasSibling-Jack
。我们如何重新定义
:hasSibling
属性?@4ell我不太清楚你在问什么。你能举个例子说明你想从什么中推断出什么吗?从一个事实中我只想推断出
Mary:hasSibling-Jack
不包括:hasSibling-on-on-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in。