如何在Graphdb中设置自定义规则

时间:2017-07-14 10:25:45

标签: rule-engine graphdb

我正在尝试在Graphdb中制定海关规则。我有一个 Person 本体,它有“Parent”和“Child”类,对象属性“hasChild”和“hasGrandChild”。 有三个节点有这样的关系:

:阿里:hasChild:阿斯兰郎 :阿斯拉姆:hasChild:艾哈迈德
现在我想在Graphdb中推断出“:Ali:hasGrandChild:Ahmed”。像owl horst优化的内置规则集不起作用。 我尝试使用.pie文件制作自定义规则但新规则不起作用

2 个答案:

答案 0 :(得分:1)

我创建了一个名为“CustomRule.pie”的规则集文件。它有三个主要部分“Prefices”,“Axioms”和“Rules” 在Prefices中,我插入了我们的本体前缀,如:
人:http://www.semanticweb.org/hamza/ontologies/2017/6/Person.owl#
然后在Axioms中,我们必须编写我们在本体中插入的所有三元组Subject,Predicate,Object。像:
<'人:艾哈迈德'> <'人:hasChild'> <'人:阿里'>
<'人:阿里'> <'人:hasChild'> <'人:阿斯拉姆'>
// Ingore逗号
最后,在Rules部分,我们可以编写蕴涵规则。它检查Axioms部分中可用的所有公理以实现规则。喜欢
Id:自定义
      <' Person:hasChild'> b
      b<'人:hasChild'> ç
    ------------------------------------
      <' Person:hasGrandChild'> ç

答案 1 :(得分:1)

如果您想表达不属于OWL或RDFS标准的语义,GraphDB可让您灵活地开发自己的规则。在此示例中,您尝试定义属性hasGranChild是两个hasChild属性的链。这可以通过OWL属性链公理实现。

我的建议是在GraphDB中使用OWL 2 RL和OWL 2 QL规则集的标准OWL语义部分。这是一个例子:

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

:hasParent  a  owl:ObjectProperty .

:hasGrandChild  owl:propertyChainAxiom
                ( :hasChild :hasChild ) .

:Ahmed :hasChild :Ali .
:Ali :hasParent :Aslam .

请不要忘记在创建存储库期间将默认规则集更改为OWL 2 RL或OWL 2 QL。

相关问题