我用乌龟符号写了一个简单的文件,其中戴夫是玛丽的父亲和杰克的玛丽妹妹。我想要戴夫有两个孩子杰克和玛丽。
Angularjs
我看过http://www.w3.org/TR/owl-ref/#Property,http://www.w3.org/TR/2002/WD-owl-semantics-20021108/syntax.html#2.3.1.3,但仍然不明白如何表达这个简单的事实。
答案 0 :(得分:2)
戴夫是杰克的玛丽和玛丽姐姐的父亲。我想要戴夫有两个孩子杰克和玛丽。
如果忽略兄弟姐妹有不同父母的可能性(例如,父母是共同的父母和不同的父母),那么你可以用子属性链来做到这一点。如果您有以下数据:
Dave→ hasChild 玛丽→ hasSibling 杰克
然后你想要使用以下规则:
hasChild•hasSibling⊑hasChild
这可以让你推断:
戴夫→ hasChild 杰克
在Turtle中可能看起来像这样:
@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 .
以下是Protege中得出的结论: