用OWL和RDF描述推断属性的正确方法

时间:2018-06-06 21:45:52

标签: rdf owl rdfs graphdb

我正在尝试使用OWL编写推理规则。

鉴于以下内容:

  • 文件被归类为具有类别 - 让我们说"合同法"
  • 有一个父类别"法律","合同法"作为子类别
  • 我想推断该文档也被归类为" Law"

说明:

@prefix : <http://example.com/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

:Document rdf:type owl:Class .
:Category rdf:type owl:Class .

:documentHasCategory rdf:type owl:ObjectProperty ;
                rdfs:domain :Document ;
                rdfs:range :Category .

:hasSubCategory rdf:type owl:ObjectProperty ;
                rdfs:domain :Category ;
                rdfs:range :Category .

:category1 rdf:type :Category ;
      rdfs:label "Law" ;
      :hasSubCategory :category2 .

:category2 rdf:type :Category ;
      rdfs:label "Contract Law".

:doc1 rdf:type :Document ;
     :documentHasCategory :category2 .

我应该如何写一个推理声明来添加&#34; Law&#34;到文件?我试过了:

:inferredCategory rdf:type owl:ObjectProperty ;
                 rdfs:domain :Document ;
                 rdfs:range :Category ;
                 owl:propertyChainAxiom ( :documentHasCategory :hasSubCategory ) .

但我没有看到任何推断语句(我使用的是GraphDB)。

owl:propertyChainAxiom是否正确接近此方法? 我的乌龟语法错了吗?

1 个答案:

答案 0 :(得分:0)

我不尊重hasSubCategory谓词的方向,因此没有任何内容与propertyChain规则匹配。

定义像这样的推理可以正常工作:

:hasParentCategory rdf:type owl:ObjectProperty ;
    owl:inverseOf :hasChildCategory .

:documentHasInferredCategory rdf:type owl:ObjectProperty ;
                rdfs:domain :Document ;
                rdfs:range :Category ;
                owl:propertyChainAxiom ( :documentHasCategory :hasParentCategory ) .