利用jenaAPI查詢家族本體學習jena的實例_第1頁
利用jenaAPI查詢家族本體學習jena的實例_第2頁
利用jenaAPI查詢家族本體學習jena的實例_第3頁
利用jenaAPI查詢家族本體學習jena的實例_第4頁
利用jenaAPI查詢家族本體學習jena的實例_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、利用jena API查詢OW本體(可以作為學習本體和jena接口的一個經典實例)2008-05-10 15:12最近在學習本體和語義網。學習了OWL也嘗試著用了一下jena API對OWL本體進行查詢。1.本體簡介本體”這個術語來自于哲學,它是研究世界上的各種實體以及他們是怎么關聯的科 學。本體是對應用領域概念化的顯示的解釋說明,為某領域提供了一個共享通用的理解,從而無論是人還是應用系統之間都能夠有效地進行語義上的理解和通訊。studer 認為,本體是:共享概念模型的明確的形式化規范說明”。這包括了 4 層含義:概念化(conceptualization) 通過抽象出客觀世界中一些現象的相關概

2、念而得到的模型,其表示的含義獨立于具體的環境狀態 明確(explicit) 所使用的概念及使用這些概念的約束都有明確的定義 形式化(formal) 本體應是計算機可讀的。 共享(share) 知識本體中體現的是共同認可的知識,反映的是相關領域中公認的概念集,它所針對的是團體而不是個體。本體的目標是捕獲相關的領域的知識,提供對該領域知識的共同理解,確定該陋域內共同認可的詞匯, 并從不同層次的形式化模式上給出這些詞匯和詞匯之間相互關系 的明確定義。2.OWL介2003年7月W3C公布了OWL Web ontology語言的最初工作草案,2004年2月10日,OWL正式成為W3C推薦的標準。OWL和

3、DAML + OIL非常相近,只有一些微小的變化。DAML + OIL和OWL的語義都基于描述邏輯(descriptionlogic ,DL)。OWL作為W3C推薦 的標準本體表示語言,它的最大特點是關聯描述邏輯,通過對概念、概念屬性及其相互間關系 的描述,構成概念的復雜關系網絡,這就意味著描述邏輯推理機可以推理OWL本體。OWL有3個表達能力遞增的子語言:OWL Lite,OWL DL,OWL Full即。OWL Lite提供了類層次的能 力和簡單的約束能力,支持基數為0或1的基數約束,包括6個類別的語言構造子。OWL DL在保持計算完整性(computational completenes

4、s )和可判定性(decidability)的前提下,提供了盡 可能大的表達能力,包含了OWL的全部語言構造成分,但他們的使用受到一些限制(如一個 類可以是許多類的子類,但不能是另一個類的實例)。描述邏輯是OWL的形式化基礎,OWL DL的主要擴充是增加了布爾邏輯運算操作。OWL Full包含OWL的全部語言構造成分并取消了OWL DL的限制,在OWL Full中一個類可以看成個體的集合 ,也可以看成是一個個 體。由于OWLFull取消了OWL DL中的保證可計算的某些限制,在沒有計算保證的語法自由的RDF上進行最大程度表達,允許一個Ontology在預定義的(RDF、OWL)詞匯表上增加 詞

5、匯,從而任何推理軟件均不能支持OWL FULL的所有特點,因此不存在完整的推理算法支持OWL Full的全部特性。OWL通過對概念、概念屬性及其相互間關系的描述,構成概念的復雜關系網絡。OWL本體的一個優點是會有能夠對其做推理的工具。這些工具提供了不特定于某個主題領域的通用支持,而如果要構建一個能對一個特定的工業界標準XML Schema!故推理的系統,它往往是特定于一個領域的。構建一個可靠的和有用的推理系統不是一項簡單的工作。而創建一個本體則更為容易處理。3.jena簡介jena是惠普公司的一個項目,jena為應用程序開發人員提供了一套 java接口對本體進行操作。這樣我們就可以調用jena

6、API,構建我們自己的應用程序,實現對包括 RDF OWL本體進行創建,修改,查詢以及推理操作。這是一個用 OW 通言開發的家族本體。這是本體的數據文件下面是利用 jenaAPI對查詢某個人的爸爸,媽媽,兄弟,姐妹,爺爺,祖先和后代。.public class SearchFamily private final static String FATHER=father”;private final static String MOTHER=mother”;private final static String DAUGHTER=daughter”;private final static St

7、ring SON=son”;private final static String SISTER=sister”;private final static String BROTHER=brother”;private final static String ANCESTOR=ancestor”;private final static String OFFSPRING=offSpring;private final static String GRANDPA=grandPa;private final static StringrulePath=E:programmingworkspaceO

8、WLTestWebRootWEB-INFfamily.rules”;private final static String pre=http:/ final static StringfileSchema=E:programmingworkspaceOWLTestWebRootWEB-INFfamilySchema.xml;public final static StringfileData=E:programmingworkspaceOWLTestWebRootWEB-INFfamilyData.xml;/*下面的方法,接受一個人的名字,然后構造出 sparql語句*/public stat

9、ic String getSearchString(String keyWords)StringBuffer sb=new StringBuffer(PREFIX fa: +PREFIX rdfs: +PREFIX rdf: );sb.append(SELECT ?father ?mother ?son ?daughter ?sister ?brother ?ancestor ?offSpring ?gr andPa );sb.append(WHERE ();sb.append( OPTIONAL ();sb.append(keyWords+ fa:hasFather ?father );sb

10、.append( .);sb.append( OPTIONAL ();sb.append(keyWords+ fa:hasMother ?mother );sb.append( .);sb.append( OPTIONAL ();sb.append(keyWords+ fa:hasSon ?son );sb.append( .);sb.append( OPTIONAL ();sb.append(keyWords + fa:hasDaughter ?daughter );sb.append( .);sb.append( OPTIONAL ();sb.append(keyWords+ fa:has

11、Sister ?sister );sb.append( .);sb.append( OPTIONAL ();sb.append(keyWords + fa:hasBrother ?brother );sb.append( .);sb.append( OPTIONAL ();sb.append(keyWords+ fa:hasAncestor ?ancestor );sb.append( .);sb.append( OPTIONAL ();sb.append(keyWords + fa:hasOffSpring ?offSpring );sb.append( .);sb.append( OPTI

12、ONAL ();sb.append(keyWords + fa:hasGrandPa ?grandPa );sb.append( );sb.append( );System.out.println(sb);return sb.toString();public static Map getResultsList(String keyWords,String fileSchema,String fileData,String rule)(/Model m=getModel(fileSchema, fileData);/沒有使用家族規則if(rule=null) rule=rulePath;Mod

13、el rm=getModelByRules(fileSchema, fileData, rule); /String searchString=getSearchString(fa:+keyWords);Map map=getResultsList(searchString, rm);return map;使用了家族規則public static Model getModel(String fileSchema,String fileData)FileManager fm=FileManager.get();Model schema = fm.loadModel(fileSchema);Mod

14、el data = fm.loadModel(fileData);Reasoner reasoner = ReasonerRegistry.getOWLReasoner();reasoner = reasoner.bindSchema(schema);InfModel m = ModelFactory.createInfModel(reasoner, data);OntModel om=ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM, m); return om;/*根據 rule,構建 model 對象*/public static

15、 Model getModelByRules(String fileSchema,String fileData,String rulePath)FileManager fm=FileManager.get();Model schema = fm.loadModel(fileSchema);Model data = fm.loadModel(fileData);/設置新的領域規則List rules = Rule.rulesFromURL(rulePath);GenericRuleReasoner rea = new GenericRuleReasoner(rules);rea.setOWLT

16、ranslation(true); / not needed in RDFS case rea.setTransitiveClosureCaching(true);rea =(GenericRuleReasoner) rea.bindSchema(schema);InfModel m = ModelFactory.createInfModel(rea, data);OntModel om=ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM, m); return om;private static Map getResultsList(S

17、tring searchString,Model model)(Query q=QueryFactory.create(searchString);QueryExecution qe=QueryExecutionFactory.create(q, model);ResultSet rs=qe.execSelect(); /執行查詢System.out.println(rs.getReaultVars-+rs.getResultVars();QuerySolution qs;RDFNodefather,mother,son,daughter,sister,ancestor,offSpring,b

18、rother,grandPa;MapString, Set map=new HashMapString, Set();Set father_=new HashSet();Set mother_=new HashSet();Set son_=new HashSet();Set sister_=new HashSet();Set ancestor_=new HashSet();Set offSpring_=new HashSet();Set brother_=new HashSet();Set daughter_=new HashSet();Set grandPa_=new HashSet();w

19、hile(rs.hasNext()(qs= rs.nextSolution();father=qs.get(FATHER);mother=qs.get(MOTHER);son=qs.get(SON);daughter=qs.get(DAUGHTER);sister=qs.get(SISTER);ancestor=qs.get(ANCESTOR);offSpring=qs.get(OFFSPRING);brother=qs.get(BROTHER);grandPa=qs.get(GRANDPA);if(father!=null)father_.add(father);if(mother!=nul

20、l)mother_.add(mother);if(son!=null)son_.add(son);if(daughter!=null)daughter_.add(daughter);if(sister!=null)sister_.add(sister);if(ancestor!=null)ancestor_.add(ancestor);if(offSpring!=null)offSpring_.add(offSpring);if(brother!=null)brother_.add(brother);if(grandPa!=null)grandPa_.add(grandPa);map.put(

21、FATHER, father_);map.put(MOTHER, mother_);map.put(SON, son_);map.put(SISTER, sister_);map.put(BROTHER, brother_);map.put(ANCESTOR, ancestor_);map.put(DAUGHTER, daughter_);map.put(OFFSPRING, offSpring_);map.put(GRANDPA, grandPa_);/ ResultSetFormatter.out(System.out, rs,q);qe.close();return map;public

22、 static void print( MapString, Set map) Set keys=map.keySet();Iterator keyi=keys.iterator();String key;Set l;Iterator i;RDFNode r;while(keyi.hasNext()key=keyi.next();System.out.println(key+-:);l=map.get(key);i=l.iterator();while(i.hasNext() r=i.next();if(r.isResource()(System.out.print( (Resource)r).getLocal

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論