1. 程式人生 > >Jena 本體推理規則介紹

Jena 本體推理規則介紹

本體的推理規則庫是有一條條規則組成的。每條規則由主體(body)和頭(head)組成,一條規則可以有一個主體和一個頭,例如規則:[rule1:(?a fa:hasHusband ?b)(?a fa:isMotherOf ?c)->(?b fa:isFatherOf ?c)],其中規則的主體為:?a @hasHusband ?b,?a @isMotherOf ?c,頭為:?b @isFatherOf ?c,也就是說有所有的主體可以推出頭。?a @hasHusband ?b,?a @isMotherOf ?c,?b @isFatherOf ?c三者有一個稱謂:ClauseEntry。例如方法Rule類中getbody()方法返回是一個ClauseEntry集合。他有2個元素?a @hasHusband ?b,?a @isMotherOf ?c。下面有個規則庫:

  1. @prefix fa: <http://www.semanticweb.org/ontologies/2010/0/family.owl#>[email protected] <RDFS>[email protected] <OWL>.
  2. [rule1: (?a fa:hasHusband ?b)(?a fa:isMotherOf ?c)->(?b fa:isFatherOf ?c)]  
  3. [rule2: (?a fa:hasHusband ?b)(?a fa:hasDaughter ?c)->(?b fa:isFartherOf ?c)]  
  4. [rule3: (?a fa:hasHusband ?b)(?a fa:hasDaughter ?c)->(?b fa:hasDaughter ?c)]  
  5. [rule4: (?a fa:hasHusband ?b)(?a fa:hasDaughter ?c)->(?c fa:hasFather ?b)]  
  6. [rule5: (?a fa:hasHusband ?b)(?a fa:hasDaughter ?c)->(?c fa:isDaughterOf ?b)]  
  7. [rule6: (?a fa:hasHusband ?b)(?a fa:hasSon ?c)->(?b fa:isFatherOf ?c)]  
  8. [rule7: (?a fa:hasHusband ?b)(?a fa:hasSon ?c)->(?b fa:hasSon ?c)]  
  9. [rule8: (?a fa:hasHusband ?b)(?a fa:hasSon ?c)->(?c fa:hasFather ?b)]  
  10. [rule9: (?a fa:hasHusband ?b)(?a fa:hasSon ?c)->(?c fa:isSonOf ?b)]  
  11. [rule10:(?a fa:hasWife ?b)(?a fa:isFatherOf ?c)->(?b fa:isMotherOf ?c)]  
  12. [rule11:(?a fa:hasWife ?b)(?a fa:haDaughter ?c)->(?b fa:isMotherOf ?c)]  
  13. [rule12:(?a fa:hasWife ?b)(?a fa:haDaughter ?c)->(?b fa:hasDaugher ?c)]  
  14. [rule13:(?a fa:hasWife ?b)(?a fa:haDaughter ?c)->(?c fa:hasMother ?b)]  
  15. [rule14:(?a fa:hasWife ?b)(?a fa:haDaughter ?c)->(?c fa:isDaughterOf ?b)]  
  16. [rule15:(?a fa:hasWife ?b)(?a fa:hasSon ?c)->(?b fa:isMotherOf ?c)]  
  17. [rule16:(?a fa:hasWife ?b)(?a fa:hasSon ?c)->(?b fa:hasSon ?c)]  
  18. [rule17:(?a fa:hasWife ?b)(?a fa:hasSon ?c)->(?c fa:hasMother ?b)]  
  19. [rule18:(?a fa:hasWife ?b)(?a fa:hasSon ?c)->(?c fa:isSonOf ?b)]  
  20. [rule19:(?a fa:hasWife ?b)->(?a fa:isHusbandOf ?b)]  
  21. [rule20:(?a fa:hasHusband ?b)->(?a fa:isWifeOf ?b)]  
  22. [rule21:(?a fa:isHusbandOf ?b)->(?a fa:hasWife ?b)]  
  23. [rule22:(?a fa:isWifeOf ?b)->(?a fa:hasHusband ?b)]  
  24. [rule23:(?a fa:hasFather ?b) (?c fa:hasFather ?d) (?b fa:hasBrother ?d) notEqual(?b,?d)->(?a fa:hasCousin ?b)]  
  25. [rule24:(?a fa:hasFather ?b)(?c fa:hasFather ?d)(?b fa:hasFather ?e)(?d fa:hasFather ?e) notEqual(?b,?d)->(?a fa:hasCousin ?c)]  
  26. [rule25:(?a fa:hasSon ?b)(?b fa:hasSon ?c)->(?a fa:hasGrandSon ?c)]  
  27. [rule26:(?a fa:hasSon ?b)(?b fa:hasDaughter ?c)->(?a fa:hasGrandDaughter ?c)]  
  28. [rule27:(?a fa:hasFather ?b)(?b fa:hasBrother ?c)->(?a fa:hasUncle ?c)]  
  29. [rule28:(?a fa:hasFather ?b)(?b fa:hasSister ?c)->(?a fa:hasAunt ?c)]  
  30. [rule29:(?a fa:hasGrandSon ?b)->(?b fa:isGrandSonOf ?a)]  
  31. [rule30:(?a fa:hasAunt ?b)->(?b fa:isAuntOf ?a)]  
  32. [rule31:(?a fa:hasFather ?b)->(?b fa:isFatherOf ?a)]  
  33. [rule32:(?a fa:hasMother ?b)->(?b fa:isMotherOf ?a)]  
  34. [rule33:(?a fa:hasBrother ?b)->(?b fa:isBrotherOf ?a)]  
  35. [rule34:(?a fa:hasSister ?b)->(?b fa:isSisterOf ?b)]  
  36. [rule35:(?a fa:hasCousin ?b)->(?b fa:isCousinOf ?a)]  
  37. [rule36:(?a fa:hasSon ?b)->(?b fa:isSonOf ?a)]  
  38. [rule37:(?a fa:hasDaughter ?b)->(?b fa:isDaughterOf ?a)]  
  39. [rule38:(?a fa:hasGrandDaughter ?b)->(?b fa:isGrandDaughterOf ?a)]  
  40. [rule39:(?a fa:hasWife ?b)->(?b fa:isWifeOf ?a)]  
  41. [rule40:(?a fa:hasHusband ?b)->(?b fa:isHusbandOf ?a)]  
  42. [rule41:(?a fa:hasUncle ?b)->(?b fa:isUncleOf ?a)]  
 

下面程式碼是根據這個規則庫查個規則的例子

  1. publicstaticvoid main(String[] args) {  
  2.         // TODO Auto-generated method stub
  3.         List<Rule> rules=Rule.rulesFromURL("file:f:/family.rules");  
  4.         System.out.println(rules.get(0));  
  5.         ClauseEntry[] body=rules.get(0).getBody();  
  6.         int j=rules.get(0).bodyLength();  
  7.         System.out.println(j);  
  8.         for (int i=0;i<j;i++){  
  9.             System.out.print(body[i]+",");  
  10.         }  
  11.         System.out.println("/n-------------------/n");  
  12.         ClauseEntry[] head=rules.get(0).getHead();  
  13.         int k=rules.get(0).headLength();  
  14.         for (int i=0;i<k;i++){  
  15.             System.out.print(head[i]+",");  
  16.         }  
  17.         System.out.println("/n-------------------/n");  
  18.         System.out.println(rules.get(0).getName());  
  19.     }  
 

相關推薦

Jena 本體推理規則介紹

本體的推理規則庫是有一條條規則組成的。每條規則由主體(body)和頭(head)組成,一條規則可以有一個主體和一個頭,例如規則:[rule1:(?a fa:hasHusband ?b)(?a fa:isMotherOf ?c)->(?b fa:isFatherOf

Jena 本體推理

一,使用Jena對OWL本體進行查詢推理  使用sparql對本體進行查詢 1)InfModel是對常規Model的擴充套件,支援任何相關的推理能力 2)QueryExecution 執行sparql查詢 3)ResultSetFo

分銷系統開發規則介紹

能量 服務 普通 ron 二維碼 市場 價值 統一管理 商城 如果說你看到了----這套模式的優勢,那你會是想要自己也做一個類似的系統模式,自己來操作,看到一個系統模式的優勢所在你就是他的領航者。 我們知道隨著商品經濟的高速發展使工商企業的經濟協作和

nginx重新規則介紹(二)

示例 - 標準化域名 NGINX重寫規則的最常見用途之一是捕獲網站域名的棄用或非標準版本,並將其重定向到當前名稱。有幾個相關的用例。 從前名稱重定向到當前名稱 此示例NGINX重寫規則將來自www.old-name.com和old-name.com的請求永久重定向到www.new-nam

NGINX重寫規則介紹(一)

在這篇部落格文章中,我們將討論如何建立NGINX重寫規則(相同的方法適用於NGINX Plus和開源NGINX軟體)。重寫規則會更改客戶端請求中的部分或全部URL,通常用於以下兩種目的之一: 通知客戶他們請求的資源現在位於不同的位置。示例用例是指您的網站的域名已更改,您希望客戶端使用規範的

關於codeforces比賽規則介紹(轉載)

Codeforces簡稱: cf(所以談論cf的時候經常被誤會成TX的那款遊戲).網址: codeforces.com  這是一個俄國的演算法競賽網站,由來自薩拉托夫州立大學、由Mike Mirzayanov領導的一個團隊創立和維護,是一個舉辦比賽、做題和交流的平臺.舉辦比賽和做題就不說了,“交流”指的是自帶

CodeForces官方比賽規則介紹

3. The cost of the problem can be determined by the following table. For example, if the problem B was solved after 10 minutes of contest, then it costs 10

關於codeforces比賽規則介紹

Codeforces 簡稱: cf(所以談論cf的時候經常被誤會成TX的那款遊戲). 網址: codeforces.com   這是一個俄國的演算法競賽網站,由來自薩拉托夫州立大學、由Mike Mirzayanov領導的一個團隊創立和維護,是一個舉辦比賽、

JavaScript中的object轉換成number或string規則介紹

object自動轉換成string的規則: 1.如果object所屬類覆寫了toString()方法,則呼叫該方法。如果toString()呼叫的返回結果為Primitive(string、number、boolean、undefined、null),則將該Primi

圖譜推理規則提取調研

相關演算法基於路徑排序學習方法(PRA,Pathranking Algorithm)思想:該方法將每種不同的關係路徑作為一維特徵,通過在知識圖譜中統計大量的關係路徑構建關係分類的特徵向量,建立關係分類器進行關係抽取,繞開規則提取步驟直接推理缺點:這種基於關係的同現統計的方法,

【關於codeforces比賽規則介紹】(轉載)

Codeforces簡稱: cf(所以談論cf的時候經常被誤會成TX的那款遊戲).網址: codeforces.com  這是一個俄國的演算法競賽網站,由來自薩拉托夫州立大學、由Mike Mirzayanov領導的一個團隊創立和維護,是一個舉辦比賽、做題和交流的平臺.舉辦比賽和做題就不說了,“交流”指的是自帶

本體(ontology)學習之我見——Jena規則編寫——中文顯示與owl:inverseOf推理結果不全

     本體建立以後,接下來就是考慮怎樣去使用本體。之前已經說過,我的主要用途就是找出本體例項中的衝突(inconsistent)以及推匯出新的關係,而這兩者都要用到規則。筆者主要運用運用Jena提供的基於自定義規則的推理機來實現以上兩點,當然你也可以使用Jena+pell

jena fuseki 自定義推導規則(OWLFBRuleReasoner推理機)

訪問請移步至,這裡有能“擊穿”平行宇宙的亂序並行位元組流… 造成該問題,主要兩大緣由: 其一,推導規則(rules.ttl)需要用逗號隔開。 @prefix : <http://www.kgdemo.com#> . @prefix rdf: &l

知識圖譜推理與實踐 (2) -- 基於jena實現規則推理

本章,介紹 基於jena的規則引擎實現推理,並通過兩個例子介紹如何coding實現。 規則引擎概述 jena包含了一個通用的規則推理機,可以在RDFS和OWL推理機使用,也可以單獨使用。 推理機支援在RDF圖上推理,提供前向鏈、後向鏈和二者混合執行模式。包含RETE engine 和 one tabled d

個性化推薦系統原理介紹(基於內容過濾/協同過濾/關聯規則/序列模式)

信息 來講 行為記錄 鏈接 方程 機器學習 沒有 比較 graph 個性化推薦根據用戶興趣和行為特點,向用戶推薦所需的信息或商品,幫助用戶在海量信息中快速發現真正所需的商品,提高用戶黏性,促進信息點擊和商品銷售。推薦系統是基於海量數據挖掘分析的商業智能平臺,推薦主要基

幾個常用規則引擎的簡單介紹和演示

規則引擎 drools ilog odm Ilog JRules 是最有名的商用BRMS;Drools 是最活躍的開源規則引擎;Jess 是Clips的java實現,就如JRuby之於Ruby,是AI系的代表;Visual Rules(旗正規則引擎)國內商業規則引擎品牌。今天對比了一下這四個頗

Apache中 RewriteRule 規則參數介紹

dso 遠程 完整 所在地 /var/ 同時 兼容 taobao 占用 摘要: Apache模塊 mod_rewrite 提供了一個基於正則表達式分析器的重寫引擎來實時重寫URL請求。它支持每個完整規則可以擁有不限數量的子規則以及附加條件規則的靈活而且強大的URL操作機制。

字典基本規則以及介紹

輸出 字典 介紹 ict pri 通過 動態 div for dict 1.鍵值對 2.字典的value可以是任何值,比如列表,元組,字典等等 3.列表,字典不能作為字典的key,因為列表是動態的 ,可修改,而元組可以 4.字典是無序的,通過多次print確認是否每次輸出的

痞子衡嵌入式:飛思卡爾i.MX RT系列微控制器介紹篇(3)- 命名規則

rule 成員 oom 嵌入 信息 100% 規則 控制器 今天   大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是飛思卡爾i.MX RT系列MCU的命名規則。   打開任何一款i.MX RT系列芯片的Data Sheet均可找到如下命名規則表,以i.M

QLExpress 規則引擎使用介紹

extend ati result ret ali 使用介紹 ger 增加 替換 一個輕量級的類java語法規則引擎,作為一個嵌入式規則引擎在業務系統中使用。讓業務規則定義簡便而不失靈活。讓業務人員就可以定義業務規則。支持標準的JAVA語法,還可以支持自定義操作符號、操作符