用 OWL 和 RDF 描述推断 属性 的正确方法
Correct way to describe inferred property with OWL and RDF
我正在尝试使用 OWL 编写推理规则。
鉴于以下情况:
- 文档被分类为具有类别 - 比方说 "Contract Law"
- 有父类别"Law",子类别"Contract Law"
- 我想推断该文档也属于"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 .
如何写推理语句将"Law"的类别添加到文档中?我试过了:
:inferredCategory rdf:type owl:ObjectProperty ;
rdfs:domain :Document ;
rdfs:range :Category ;
owl:propertyChainAxiom ( :documentHasCategory :hasSubCategory ) .
但我没有看到任何推断语句(我正在使用 GraphDB)。
owl:propertyChainAxiom
是解决这个问题的正确方法吗?
我的 turtle 语法有误吗?
我没有遵守 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 ) .
我正在尝试使用 OWL 编写推理规则。
鉴于以下情况:
- 文档被分类为具有类别 - 比方说 "Contract Law"
- 有父类别"Law",子类别"Contract Law"
- 我想推断该文档也属于"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 .
如何写推理语句将"Law"的类别添加到文档中?我试过了:
:inferredCategory rdf:type owl:ObjectProperty ;
rdfs:domain :Document ;
rdfs:range :Category ;
owl:propertyChainAxiom ( :documentHasCategory :hasSubCategory ) .
但我没有看到任何推断语句(我正在使用 GraphDB)。
owl:propertyChainAxiom
是解决这个问题的正确方法吗?
我的 turtle 语法有误吗?
我没有遵守 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 ) .