2017-07-14 86 views
0

我試圖在Graphdb中創建海關規則。我有一個Person本體,它具有類「Parent」和「Child」,以及對象屬性「hasChild」和「hasGrandChild」。 有像這樣的關係三個節點:

:阿里:hasChild:阿斯拉姆
:阿斯拉姆:hasChild:艾哈邁德

現在我想推斷 「:阿里:hasGrandChild:艾哈邁德」 在Graphdb。像owl horst優化內置規則集不起作用。 我嘗試使用.pie文件來製作自定義規則,但新規則不起作用如何在Graphdb中設置自定義規則

+0

歡迎來到Stack Overflow!請[編輯]您的問題以顯示[迄今爲止的代碼](http://whathaveyoutried.com)。你至少應該包括一個你遇到問題的代碼大綱(但最好是[mcve]),然後我們可以嘗試幫助解決具體問題。你還應該閱讀[問]。 –

+0

http://graphdb.ontotext.com/documentation/standard/reasoning.html#custom-rulesets? –

回答

1

我創建了一個名爲「CustomRule.pie」的規則集文件。它有三個主要部分「Prefices」,「公理」和「規則」。
在Prefices,我插入我們的本體前綴,如:
人:http://www.semanticweb.org/hamza/ontologies/2017/6/Person.owl#
然後在公理,我們必須寫所有的三元組主語,謂語,我們已經插在我們的本體論的對象。像:
< '的人:艾哈邁德'> < '的人:hasChild'> < '的人:阿里'>
< '的人:阿里'> < '的人:hasChild'> < '的人:阿斯拉姆'>
// Ingore逗號
最後,在規則部分,我們可以編寫蘊含規則。它檢查公理部分提供的所有公理以實現規則。像
編號:定製
一個< '的人:hasChild'> b
b < '的人:hasChild'>ç
-------------------- ----------------
a <'Person:hasGrandChild'> c

1

如果你想表達語義而不是部分的話,GraphDB可以讓你靈活地開發你自己的規則。 OWL或RDFS標準。在此示例中,您嘗試定義屬性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。