我正在尝试在Graphdb中制定海关规则。我有一个 Person 本体,它有“Parent”和“Child”类,对象属性“hasChild”和“hasGrandChild”。
有三个节点有这样的关系:
:阿里:hasChild:阿斯兰郎
:阿斯拉姆:hasChild:艾哈迈德
现在我想在Graphdb中推断出“:Ali:hasGrandChild:Ahmed”。像owl horst优化的内置规则集不起作用。
我尝试使用.pie文件制作自定义规则但新规则不起作用
答案 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。