利用jenaAPI查詢家族本體_第1頁(yè)
利用jenaAPI查詢家族本體_第2頁(yè)
利用jenaAPI查詢家族本體_第3頁(yè)
利用jenaAPI查詢家族本體_第4頁(yè)
利用jenaAPI查詢家族本體_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、利用jena API查詢OWL本體2008-05-10 15:12最近在學(xué)習(xí)本體和語(yǔ)義網(wǎng)。學(xué)習(xí)了 OWL,也嘗試著用了一下jena API對(duì)OWL 本體進(jìn)行查詢。1.本體簡(jiǎn)介“本體”這個(gè)術(shù)語(yǔ)來(lái)自于哲學(xué),它是研究世界上的各種實(shí)體以及他們是怎么關(guān)聯(lián)的科學(xué)。本體是對(duì)應(yīng)用領(lǐng)域概念化的 顯示的解釋說(shuō)明,為某領(lǐng)域提供了一個(gè)共享通用的理解,從而無(wú)論是人還是應(yīng)用系統(tǒng)之間都能夠有效地進(jìn)行語(yǔ)義上的理解和通 訊。studer認(rèn)為,本體是:“共享概念模型的明確的形式化規(guī)范說(shuō)明”。這包括了4層含義: 概念化(conceptualization)通過(guò)抽象出客觀世界中一些現(xiàn)象的相關(guān)概念而得到的模型,其表示的含義獨(dú)立于具體的

2、環(huán)境狀態(tài)明確(explicit)所使用的概念及使用這些概念的約束都有明確的定義形式化(formal)本體應(yīng)是計(jì)算機(jī)可讀的。共享(share)知識(shí)本體中體現(xiàn)的是共同認(rèn)可的知識(shí),反映的是相關(guān)領(lǐng)域中公認(rèn)的概念集,它所針對(duì)的是團(tuán)體而不是個(gè)體。本體的目標(biāo)是捕獲 相關(guān)的領(lǐng)域的知識(shí),提供對(duì)該領(lǐng)域知識(shí)的共同理解,確定該陋域內(nèi)共同認(rèn)可的詞匯,并從不同層次的形式化模式上給出這些詞 匯和詞匯之間相互關(guān)系的明確定義。2.WL間介2003年7月W3C公布了 OWL Web ontology語(yǔ)言的最初工作草案,2004年2月10 日,OWL正式成為W3C推薦的標(biāo)準(zhǔn)。OWL和DAML + OIL非常相近,只有一些微小的變化

3、。 DAML + OIL和OWL的語(yǔ)義都基于描述邏輯(descriptionlogic ,DL)。OWL作為W3C推薦 的標(biāo)準(zhǔn)本體表示語(yǔ)言,它的最大特點(diǎn)是關(guān)聯(lián)描述邏輯,通過(guò)對(duì)概念、概念屬性及其相互間關(guān)系 的描述,構(gòu)成概念的復(fù)雜關(guān)系網(wǎng)絡(luò),這就意味著描述邏輯推理機(jī)可以推理OWL本體。OWL有 3個(gè)表達(dá)能力遞增的子語(yǔ)言:OWL Lite ,OWL DL , OWL Full20 OWL Lite提供了類層次的能 力和簡(jiǎn)單的約束能力,支持基數(shù)為0或1的基數(shù)約束,包括6個(gè)類別的語(yǔ)言構(gòu)造子。OWL DL 在保持計(jì)算完整性(computational completeness )和可判定性(decidabi

4、lity)的前提下,提供了盡 可能大的表達(dá)能力,包含了 OWL的全部語(yǔ)言構(gòu)造成分,但他們的使用受到一些限制(如一個(gè) 類可以是許多類的子類,但不能是另一個(gè)類的實(shí)例)。描述邏輯是OWL的形式化基礎(chǔ),OWL DL的主要擴(kuò)充是增加了布爾邏輯運(yùn)算操作。OWL Full包含OWL的全部語(yǔ)言構(gòu)造成分并 取消了 OWL DL的限制,在OWL Full中一個(gè)類可以看成個(gè)體的集合,也可以看成是一個(gè)個(gè) 體。由于OWL Full取消了 OWL DL中的保證可計(jì)算的某些限制,在沒(méi)有計(jì)算保證的語(yǔ)法自 由的RDF上進(jìn)行最大程度表達(dá),允許一個(gè)Ontology在預(yù)定義的(RDF、OWL)詞匯表上增加 詞匯,從而任何推理軟件均不

5、能支持OWL FULL的所有特點(diǎn),因此不存在完整的推理算法支 持OWL Full的全部特性。OWL通過(guò)對(duì)概念、概念屬性及其相互間關(guān)系的描述構(gòu)成概念的復(fù) 雜關(guān)系網(wǎng)絡(luò)。OWL本體的一個(gè)優(yōu)點(diǎn)是會(huì)有能夠?qū)ζ渥鐾评淼墓ぞ摺_@些工具提供了不特定于某個(gè)主 題領(lǐng)域的通用支持,而如果要構(gòu)建一個(gè)能對(duì)一個(gè)特定的工業(yè)界標(biāo)準(zhǔn)XML Schema做推理的系 統(tǒng),它往往是特定于一個(gè)領(lǐng)域的。構(gòu)建一個(gè)可靠的和有用的推理系統(tǒng)不是一項(xiàng)簡(jiǎn)單的工作。 而創(chuàng)建一個(gè)本體則更為容易處理。3.jena簡(jiǎn)介jena是惠普公司的一個(gè)項(xiàng)目,jena為應(yīng)用程序開(kāi)發(fā)人員提供了一套java接口對(duì)本體進(jìn) 行操作。這樣我們就可以調(diào)用jenaAPI,構(gòu)建我們自

6、己的應(yīng)用程序,實(shí)現(xiàn)對(duì)包括RDF,OWL 本體進(jìn)行創(chuàng)建,修改,查詢以及推理操作。這是一個(gè)用OWL語(yǔ)言開(kāi)發(fā)的家族本體。這是本體的數(shù)據(jù)文件下面是利用jenaAPI對(duì)查詢某個(gè)人的爸爸,媽媽,兄弟,姐妹,爺爺,祖先和后代。 public class SearchFamily private final static String FATHER=father;private final static String MOTHER=mother;private final static String DAUGHTER=daughter;private final static String SON=son;p

7、rivate 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:programmingworkspaceOWLTestWebRootWEBTN

8、Ffamily.rules;private final static String pre= HYPERLINK /family /family#;public final static StringfileSchema=E:programmingworkspaceOWLTestWebRootWEBTNFfamilySchema.xml”;public final static StringfileData=E:programmingworkspaceOWLTestWebRootWEBTNFfamilyData.xml;/*下面的方法,接受一個(gè)人的名字,然后構(gòu)造出sparql語(yǔ)句*/publi

9、c static String getSearchString(String keyWords)StringBuffer sb=new StringBuffer(PREFIX fa: HYPERLINK /family /family# +” PREFIX rdfs: HYPERLINK /2000/01/rdf-schema /2000/01/rdf-schema# +” PREFIX rdf: HYPERLINK /1999/02/22-rdf-syntax-ns /1999/02/22-rdf-syntax-ns# ”);sb.append(”SELECT ?father ?mother

10、 ?son ?daughter ?sister ?brother ?ancestor ?offSpring ?gr andPa ”);sb.append(”WHERE );sb.append(” OPTIONAL ”);sb.append(keyWords+” fa:hasFather ?father ”);sb.append(” . ”);sb.append(” OPTIONAL ”);sb.append(keyWords+” fa:hasMother ?mother ”);sb.append( .);sb.append( OPTIONAL );sb.append(keyWords+ fa:

11、hasSon ?son );sb.append( .);sb.append( OPTIONAL );sb.append(keyWords + fa:hasDaughter ?daughter );sb.append( .);sb.append( OPTIONAL );sb.append(keyWords+ fa:hasSister ?sister );sb.append( .);sb.append( OPTIONAL );sb.append(keyWords + fa:hasBrother ?brother );sb.append( .);sb.append( OPTIONAL );sb.ap

12、pend(keyWords+ fa:hasAncestor ?ancestor );sb.append( .);sb.append( OPTIONAL );sb.append(keyWords + fa:hasOffSpring ?offSpring );sb.append( .);sb.append( OPTIONAL );sb.append(keyWords + fa:hasGrandPa ?grandPa );sb.append( );sb.append( );System.out.println(sb);return sb.toString();public static Map ge

13、tResultsList(String keyWords,String fileSchema,String fileData,String rule)/Model m=getModel(fileSchema, fileData);/沒(méi) 有使用家族規(guī)則if(rule=null) rule=rulePath;Model rm=getModelByRules(fileSchema, fileData, rule); /使用了家族規(guī)則String searchString=getSearchString(fa:+keyWords);Map map=getResultsList(searchString

14、, rm);return map;public static Model getModel(String fileSchema,String fileData) FileManager fm=FileManager.get();Model schema = fm.loadModel(fileSchema);Model data = fm.loadModel(fileData);Reasoner reasoner = ReasonerRegistry.getOWLReasoner();reasoner = reasoner.bindSchema(schema);InfModel m = Mode

15、lFactory.createInfModel(reasoner, data);OntModel om=ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM, m); return om;/*根據(jù)rule,構(gòu)建model對(duì)象*/public static Model getModelByRules(String fileSchema,String fileData,String rulePath)FileManager fm=FileManager.get();Model schema = fm.loadModel(fileSchema);

16、Model data = fm.loadModel(fileData);設(shè)置新的領(lǐng)域規(guī)則List rules = Rule.rulesFromURL(rulePath);GenericRuleReasoner rea = new GenericRuleReasoner(rules);rea.setOWLTranslation(true);/ not needed in RDFS caserea.setTransitiveClosureCaching(true);rea =(GenericRuleReasoner) rea.bindSchema(schema);InfModel m = Mode

17、lFactory.createInfModel(rea, data);OntModel om=ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM, m); return om;private static Map getResultsList(String searchString,Model model)Query q=QueryFactory.create(searchString);QueryExecution qe=QueryExecutionFactory.create(q, model);ResultSet rs=qe.exe

18、cSelect(); /執(zhí)行查詢System.out.println(rs.getReaultVars+rs.getResultVars();QuerySolution qs;RDFNode father,mother,son,daughter,sister,ancestor,offSpring,brother,grandPa;MapString, Set map=new HashMapString, Set();Set father_=new HashSet();Set mother_=new HashSet();Set son_=new HashSet();Set sister_=new

19、HashSet();Set ancestor_=new HashSet();Set offSpring_=new HashSet();Set brother_=new HashSet();Set daughter_=new HashSet();Set grandPa_=new HashSet();while(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);anc

20、estor=qs.get(ANCESTOR);offSpring=qs.get(OFFSPRING);brother=qs.get(BROTHER);grandPa=qs.get(GRANDPA);if(father!=null)father_.add(father);if(mother!=null)mother_.add(mother);if(son!=null)son_.add(son);if(daughter!=null)daughter_.add(daughter);if(sister!=null)sister_.add(sister);if(ancestor!=null)ancest

21、or_.add(ancestor);if(offSpring!=null)offSpring_.add(offSpring);if(brother!=null)brother_.add(brother);if(grandPa!=null)grandPa_.add(grandPa);map.put(FATHER, father_);map.put(MOTHER, mother_);map.put(SON, son_);map.put(SISTER, sister_);map.put(BROTHER, brother_);map.put(ANCESTOR, ancestor_);map.put(D

22、AUGHTER, daughter_);map.put(OFFSPRING, offSpring_);map.put(GRANDPA, grandPa_);/ ResultSetFormatter.out(System.out, rs,q);qe.close();return map;public 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.pr

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論