語義Web服務之路3-實例

很長時間沒跟大家分享經驗了,寫這篇文章的時候,離web語義學習之路2已經有一段時間了,一是沒時間,二是最近也是在研究UDDI的東西,路3其實準備的比較倉促,但沒有關係了,本來就是個人學習嘛。路3主要講上會給大家推薦的WineAgent實例,仔細研究了它之後,發現[url]http://www.ksl.stanford.edu/people/dlm/webont/wineAgent/[/url]裏面涵蓋的東西非常多,是一個非常不錯的學習web語義的參考。wineAgent主要內容:
1.它採用JTP推理機來完成推理。
jtp是一個非常好的推理機,跟路2介紹的racer不一樣,jtp是基於jena推理的,它的好處在於代碼開源,完全是用java寫的,非常方面我們用java來編程。
2.daml+oil實現
路2我們推薦的本體標準是owl,但這沒有關係,daml和owl是一脈相承的,owl就是從daml的基礎上發展而來的,而且daml可以很容易轉換爲owl,所以我們不用擔心本體建模的問題。
 
在整個實現過程中,我們必須知道以下內容
1.owl語法,知道了owl你自然就知道了daml,這其實在我們的路1就已經說明了,另外建模的話大家可以多看看protege可視化建模工具,附件給大家分享一個protege中文入門手冊,呵呵,轉自別人的成果。
2.jtp語法,目前我還未找到任何關於jtp的詳細語法介紹,但既然它是基於jena的,我想會jena語法的話,應該不是問題,本人觀察了racer、jena的用戶手冊以及jtp的一些語法片段,發現推理機的語法幾乎是一樣的,所以我們學習路2的racer就足夠了。附件中本人會附上racer的用戶手冊,手冊有2個,給大家的是具體語法參考,另外一個是userGuide,由於文件大於2M上傳不上,其實如果大家能吧racer試用版的下下來裏面自帶就有。
 
我的實例
JTP可以在這個網址[url]http://www.ksl.stanford.edu/software/JTP/[/url]下載,裏面也有很多說明,具體就不說了。裏面包含如下內容
jtp-daml.sh和jtp-owl.sh是linux下的運行文件,jtp-daml.bat和jtp-owl.bat是windows下的執行文件,src是源代碼,我們也可以不借助.bat運行環境,直接用java來構建推理機。以下是我做的
1.新建一個tomcat工程叫jtptest,把上圖的lib下的包拷貝到web-inf/lib下,新建一個test.java,內容如下:
package org.bjtu;

import java.net.URL;
import jtp.*;
import jtp.context.daml.*;
import jtp.fol.*;

public class test
{  
    //定義知識庫,即一個owl/daml文件位置。
    public static final String KB_URL = "http://www.daml.org/2001/03/daml+oil-ex";
    //public static final String DRC = "http://www.ksl.stanford.edu/software/jtp/drc.ser";
    
    public static void main (String [] argv) throws Exception
    {
    DamlReasoningContext drc = new DamlReasoningContext();
    drc.setUp();

    drc.loadKB(new URL (KB_URL));
    //推出Peter的年齡
    ReasoningStepIterator rsi = drc.ask("(|http://www.daml.org/2001/03/daml+oil-ex#|::age |[url]http://www.daml.org/2001/03/daml+oil-ex#[/url]|::|Peter| ?x)");
    ReasoningStep rs = null;
    while ((rs = rsi.next()) != null)
    {
  Literal lit = SubstUtils.deReferenceLiteral((Literal)rs.getGoal());
  System.out.println("X = " + lit.getArgs().get(1));
    }
    }

}
運行java Application,結果如下:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章