惠民福利国产午夜成人av在线播放_国产精品区一区二区三亚洲欧美日韩另类在线_免费无码婬片AAA_日韩精品中文字幕本一本二

本體編輯、知識(shí)推理與檢索

來(lái)源:CSDN 瀏覽量:185 發(fā)布時(shí)間:2018-12-27 20:21:23

一切要從一個(gè)倒霉項(xiàng)目開(kāi)始說(shuō)起,項(xiàng)目要求根據(jù)一個(gè)構(gòu)建好的本體文件,通過(guò)JAVA調(diào)用相應(yīng)API實(shí)現(xiàn)對(duì)本體文件的編輯、推理以及檢索。由于之前對(duì)本體、知識(shí)圖譜這些完全不熟悉,被強(qiáng)行推入坑之后就開(kāi)始了漫長(zhǎng)且毫無(wú)希望的技(瘋)術(shù)(狂)調(diào)(百)研(度)之路。。。。


調(diào)研之前:這是啥呀?

調(diào)研之后:這***都是些啥?。?!

呼~(yú)~ 好在最后算是做出來(lái)了,故在此記錄一下過(guò)程及部分主要代碼。


1.環(huán)境相關(guān)

我的:

Java:

1.png

Eclipse:

2.png

Protege: Protege-5.2.0


2.項(xiàng)目整體邏輯

如圖:

3.png


3.用本體編輯工具protege構(gòu)建基礎(chǔ)本體文件

Protege是一個(gè)本體編輯工具,可以將知識(shí)的三元組以及各種邏輯通過(guò)可視化界面編輯成本體文件,protege還帶有一些推理機(jī)插件(見(jiàn)下圖),pellet、Hermit等,可以利用這些插件對(duì)本體文件進(jìn)行推理。也可以通過(guò)SWRL自定義一些規(guī)則加入本體,還可以進(jìn)行查詢??梢?jiàn)Protege能一條龍解決本體的編輯、推理、查詢等問(wèn)題,但本項(xiàng)目要求用Java調(diào)API實(shí)現(xiàn)功能。編輯、推理和檢索都是在構(gòu)建好的基礎(chǔ)本體文件上進(jìn)行的,該本體文件就是用protege構(gòu)建的。

4.png


Protege構(gòu)建本體時(shí),主要用到的有‘Classes(類)’;‘Individuals(實(shí)例)’;‘Object properties(對(duì)象屬性)’;‘Data properties(數(shù)據(jù)屬性)’這四個(gè)概念。


(1) 在定義本體的各個(gè)類時(shí),可以為其添加各種描述,比如它的等價(jià)類(Equivalent To),它是誰(shuí)的子類(SubClass Of),它與哪一類互斥(Disjoint Union Of),它下面有哪些Individuals(Instances)等等。


5.png


(2) Individuals(實(shí)例)是類下面的具體個(gè)體,比如下圖Country類下面的individual有Ametica等。在定義individual時(shí),可以為其添加描述及屬性聲明,屬性聲明中包括對(duì)象屬性數(shù)據(jù)屬性等。


6.png

(3) Object properties(對(duì)象屬性)和Data properties(數(shù)據(jù)屬性),我理解為“謂語(yǔ)”,用于連接主語(yǔ)(class/individual)和賓語(yǔ)(class/individual/value)。Object properties(對(duì)象屬性)所連接的賓語(yǔ)是class或individual,Data properties(數(shù)據(jù)屬性)所連接的賓語(yǔ)是具體的value。舉例見(jiàn)下圖:chenjianer這個(gè)人是類Expert下面的一個(gè)individual,ta是一名專家,右側(cè)帶有藍(lán)色標(biāo)志的部分是其對(duì)象屬性聲明,mother_language_is、people_is 這些就是對(duì)象屬性,后面連接的賓語(yǔ)english、Chinese 啥的仍然是個(gè)individual。右側(cè)帶有綠色標(biāo)志的部分是其數(shù)據(jù)屬性聲明,birthday、ID_card 這些就是數(shù)據(jù)屬性,后面連接的賓語(yǔ)”2008-03-23”、”4216633322656”等是具體的值。


對(duì)象屬性和數(shù)據(jù)屬性也可定義其自身的Description,其中包括Domains、Ranges,關(guān)于屬性的定義域和值域,我的理解是,在使用該屬性時(shí)所連接的主語(yǔ)的范圍即為定義域,賓語(yǔ)的范圍就是值域。


4. 初始化本體文件

通過(guò)protege構(gòu)建好的本體文件保存為一個(gè)owl文件,接下來(lái)要對(duì)其進(jìn)行編輯推理檢索,這些工作通過(guò)調(diào)用OWLAPI和Jena API實(shí)現(xiàn)。首先讀入owl文件。


7.png


5.編輯本體文件

將知識(shí)或數(shù)據(jù)寫(xiě)入本體,例子如下。這段代碼實(shí)現(xiàn)了在本體文件中新建了一個(gè)‘天線寶寶’的類,在這個(gè)類下面新建了一個(gè)名為‘天線寶寶1號(hào)’的實(shí)例,同時(shí)新建數(shù)據(jù)屬性‘name’,并為天線寶寶1號(hào)這個(gè)實(shí)例添加數(shù)據(jù)屬性聲明name=Alice。


8.png


6.pellet推理機(jī)推理

9.png


7.推理結(jié)果檢索

檢索這里用的方法是使用jena執(zhí)行sparql進(jìn)行查詢。下面這個(gè)例子是在上一步得到的推理結(jié)果中檢索是天線寶寶1號(hào)叫啥名,并把查詢結(jié)果在控制臺(tái)顯示出來(lái)。


10.png


8.其他

另外,在整個(gè)工程中引用了別的庫(kù),在引用外部jar的時(shí)候把該引的都引了,主要用到的有owl api、pellet、Jena這幾個(gè)??赡苓€會(huì)報(bào)一些jar包沖突或者某個(gè)包找不到的錯(cuò)誤,那就按照錯(cuò)誤提示,沖突就移除相應(yīng)的包,找不到就去找(廢話),我的意思是如果提示某個(gè)包沒(méi)有就去找到它下下來(lái)然后再載入。反正在載入外部jar這一趴,我真的是花了好多時(shí)間碰壁碰到自閉(哭泣)。

11.png


9.參考

經(jīng)過(guò)瘋狂百度之后發(fā)現(xiàn)這方面的資料真的不是很多,下面兩個(gè)網(wǎng)址是我主要參考的資料。在此十分感謝鏈接(1)的博主Kujou,看他的博客受到很大啟發(fā)并且十分感謝他耐心答疑解惑(抱拳了兄弟)。

(1)https://blog.csdn.net/BUPTOctopus/article/details/81562114

(2)http://dior.ics.muni.cz/~makub/owl/

--------------------- 

作者:櫻桃小胖子同學(xué) 

來(lái)源:CSDN 

原文:https://blog.csdn.net/weixin_40771521/article/details/85132456