監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價(jià)咨詢管理系統(tǒng) | 工程設(shè)計(jì)管理系統(tǒng) | 甲方項(xiàng)目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關(guān)閉

管理結(jié)構(gòu)式Web服務(wù)元數(shù)據(jù)

申請免費(fèi)試用、咨詢電話:400-8352-114

AMTeam.org

管理結(jié)構(gòu)式Web服務(wù)元數(shù)據(jù)
 
-- 管理Web服務(wù)元數(shù)據(jù)的現(xiàn)狀


Uche Ogbuji (uche.ogbuji@fourthought.com)

首席顧問,F(xiàn)ourthought, Inc.

2002 年 4 月

本文是建立在以前發(fā)表在 developerWorks 上的一篇介紹使用資源描述框架(Resource Description Framework,RDF)來強(qiáng)化 WSDL 的文章的基礎(chǔ)之上,并與最近的一篇關(guān)于 SOAP 和 RDF 一起使用的文章有關(guān)。Uche Ogbuji 著眼于 WSDL 的更新對以前介紹過的技術(shù)造成的影響,他還提到了有關(guān) RDF 和 Web 服務(wù)描述的重要討論以向開發(fā)者展示如何發(fā)揮兩者的優(yōu)勢。

大約一年半以前,我仔細(xì)研究了當(dāng)時(shí)剛宣布的 Web 服務(wù)描述語言(Web Services Description Language,WSDL)如何從與 Web 元數(shù)據(jù)格式(RDF)交互(或者在標(biāo)準(zhǔn)層次上,或者在單獨(dú)的開發(fā)人員工作的層次上)中獲益。自從那時(shí)起,Web 服務(wù)社團(tuán)和 RDF(以及 Semantic web)社團(tuán)中就一直有很多活動(dòng)。這當(dāng)中有些很好,如這些組織之間的對話已經(jīng)定型,雙方提出的技術(shù)也得到了改進(jìn)。但也有不好的,如出版界莫名其妙地想象了 Web 服務(wù)陣營和 Semantic Web 陣營之間在 W3C 發(fā)生的一場臆想的爭斗,雙方為該聯(lián)盟的資源而戰(zhàn)。所有這些進(jìn)展都是對下一代技術(shù)的開發(fā)與交互的深刻認(rèn)識。但在本文中,我只討論開發(fā)者感興趣的最重要的進(jìn)展。

對標(biāo)準(zhǔn)的更新

過去的一年中對標(biāo)準(zhǔn)進(jìn)行了大量更改。WSDL 已經(jīng)更新至版本 1.1,作為 W3C 備忘錄發(fā)布,并是新的 W3C Web 服務(wù)描述工作組( W3C Web Services Activity 的一部分)的工作起點(diǎn)。該工作組已經(jīng)發(fā)布了草案需求和用例,其中有一條非常有趣的要求格外引人注目,這就是被標(biāo)為“必須(MUST)”的 DR070:

憲章:工作組將提供到 RDF 的映射,以便被描述的信息很容易同其它應(yīng)用程序的信息合并。該映射將在 RDF Interest Group 的幫助下開發(fā)。
這帶來了好消息,總有一天 WSDL 和 RDF 之間會有標(biāo)準(zhǔn)映射。與 1.0 文檔相比,WSDL 1.1 中在技術(shù)方面幾乎沒有重要的更改,大部分是印刷錯(cuò)誤更正和對當(dāng)時(shí)用到的最新版本的 W3C XML Schema 的更新。

然而,隨著 W3C 的 Semantic Web 活動(dòng)蓬勃發(fā)展,RDF 發(fā)生了重要的更改。最近的 RDF 模型理論和 RDF/XML 語法規(guī)范推動(dòng)我對曾經(jīng)采用的 WSDL 映射到 RDF 的方法進(jìn)行了更改。還需要考慮一些其它因素。尤其是 Eric Prud'hommeaux 不采用我自己的機(jī)械的映射方法,而是一直在試圖通過建立 WSDL 元素背后底層意圖的映射來改進(jìn)我的方法。當(dāng)然,對于常規(guī)的 RDF 集成,這樣的映射更有用,而且人們希望映射可以“豐富”到可以為 Web 服務(wù)描述工作組(Web services description working group)所接受。但是,對于自己的方法,我還有一個(gè)特殊目的:提供足夠簡單而且適合非 RDF 類型的映射,并盡可能與 XML 的標(biāo)識轉(zhuǎn)化相似。

隨著 Web 服務(wù)和 RDF 陣營之間的合作越來越多,這樣一種機(jī)械映射不再非常必要,因此,我將更多的著眼于開發(fā)者的前景。

您更新映射了嗎?

開始是我把滑雪板運(yùn)動(dòng)者保險(xiǎn) Web 服務(wù)的 WSDL 映射到 RDF,后來 Eric Prud'hommeaux's 進(jìn)行了更新,清單 1 是我再次的更新。

清單 1:更新后的 RDF 中的滑雪板保險(xiǎn)服務(wù)

   <xi:include parse="text" href="endorsement-services.rdf"/>
  
 為了代碼更加簡單明了,我使用了 XML 通用實(shí)體。簡潔起見,我還略去了 SOAP 錯(cuò)誤消息規(guī)范,并修改了一些用到的名稱空間(例如,更新 XSD 名稱空間)。仍是為了簡潔,我使用的 RDF 類型分別與每個(gè)資源在描述中所使用 WSDL 元素名相對應(yīng)。

任何映射解決的問題都包括 WSDL 的命名方法。對于描述來說,WSDL 功能的名稱不一定是唯一的;端口類型可以取與服務(wù)相同的名稱。WSDL 可以根據(jù)上下文自己分辨這一點(diǎn),但是這令人困惑而且容易出錯(cuò)。RDF 的好處就在于它迫使人們考慮清楚標(biāo)識;在這一映射中,由一種方便的標(biāo)記法來命名。全球唯一的 URI 提供實(shí)際的標(biāo)識,雖然 URI 要向 RDF 軟件提供重要的錨點(diǎn),但卻不需要讓 WSDL 軟件看到或理會。事實(shí)上,這些標(biāo)識符可以由映射軟件生成為基于隨機(jī)數(shù)的全局唯一標(biāo)識符(universally-unique identifiers,UUID)。

各種建模中常見的一個(gè)問題是,如何處理一起使用并且由相同的通用名來表示的屬性和類。例如,在上面的 WSDL 映射中,消息與其部件之間的關(guān)系被稱為 <wsdl:part>,這夠自然的了,而該屬性值的類,則被稱為 <wsdl:Part>,這也是很自然的。但這有點(diǎn)糟糕,因?yàn)樗峭ㄟ^語法方面的細(xì)節(jié)來排除模棱兩可的(也就是說,只能通過 RDF 和大多數(shù)語言中的大小寫來分辨 URI )。但是,我認(rèn)為,在這種情況下,最好通過自然命名方法來解決這一問題,而不是耍命名的把戲。

在一種情況下,這樣的映射為了清晰而扭曲了這種命名方法:綁定與其相關(guān)操作(被命名為 <wsdl:operation>)的綁定細(xì)節(jié)之間的關(guān)系,以及未命名的內(nèi)聯(lián)資源所表示的該種細(xì)節(jié)與抽象的操作定義(來自 WSDL <operation> 元素)之間的關(guān)系。后者被命名為 <wsdl:abstractOperation> 以強(qiáng)調(diào)這兩種關(guān)系完全不同的概念意義。WSDL 綁定的其余語句并不符合最初的 WSDL 語法所提議的直接方式,因?yàn)槲以鴩L試通過仔細(xì)閱讀規(guī)范中對綁定元素的描述,來尋找最能抓住概念背后的意義的表達(dá)。

雖然這是很值得費(fèi)些功夫的重要任務(wù),但最終我并沒有把元素模式定義分解成低級描述,而是提取每個(gè)元素的內(nèi)容模型作為整段文字模式(literal schema),該模式是用 <rdf:parseType=Literal> 編碼的。由于 RDF 1.0 中對 RDF 文本對象的文字內(nèi)容的規(guī)定非常不完整,所以傳統(tǒng)觀點(diǎn)一直認(rèn)為這是一種危險(xiǎn)的做法,但是 RDF 核心工作組已經(jīng)在 XML 典范和信息集工作組(XML canonicalization and infoset working groups)工作的基礎(chǔ)之上對這一規(guī)范進(jìn)行了非常重要修訂工作。

把這些內(nèi)容用于實(shí)際

對于開發(fā)者來說,這一 RDF 映射的直接好處在于能夠把任意數(shù)目的這類 WSDL/RDF 描述聚集到數(shù)據(jù)庫并進(jìn)行全局查詢。作為這樣的一個(gè)示例,我已經(jīng)把它放在了我的在線 RDF 查詢演示接口(清單 1 中的 RDF)中,還有我為問題跟蹤器 Web 服務(wù)所寫的 WSDL/RDF 描述,這個(gè)服務(wù)是我在最近的 SOAP/RDF 文章中討論過的?,F(xiàn)在如果試驗(yàn)這些查詢,您將會得到普通的三元組(triple)或者甚至是圖(graph)。讓我們看一些樣本查詢,開發(fā)者可能會發(fā)現(xiàn)這些查詢有所幫助。

消息調(diào)度

事實(shí)上,您可以使用這一 RDF 描述編寫可以靈活調(diào)度代碼的驅(qū)動(dòng)程序。您可以添加表示對 Web 服務(wù)本身的抽象的 RDF 資源。然后把與這一資源有關(guān)的語句添加到 WSDL 描述及實(shí)現(xiàn)它的編程模塊。請參閱清單 2 中提供的代碼片斷示例。

清單 2:抽象的“參保的滑雪板運(yùn)動(dòng)者”web 服務(wù)的 RDF 描述

<wsdl:Service rdf:about="http://snowboard-info.com/EndorsementSearch">
  <wsdl:description rdf:resource="&sb;EndorsementSearchDef"/>
  <wsdl:implementation>
    com.snowboard-info.EndorsementSearch
  </wsdl:implementation>
</wsdl:Service>

正如 WSDL 中規(guī)定的,這是 HTTP Web 服務(wù),也許是眾多服務(wù)之一。每當(dāng)消息傳入服務(wù)的托管服務(wù)器時(shí),我們可以從 HTTP 協(xié)議實(shí)現(xiàn)中獲得 SOAP 端點(diǎn)和 SOAPAction ,并迅速獲取諸如根元素名稱空間和本地名稱等細(xì)節(jié)。接著,如果要執(zhí)行請求,您可以裝入包括下列查詢的那個(gè)模塊:

請查找實(shí)現(xiàn) Web 服務(wù)的代碼模塊,該 Web 服務(wù)的描述指定 SOAP 動(dòng)作和端點(diǎn)為 http://snowboard-info.com/EndorsementSearch、文檔元素名稱空間為 http://snowboard-info.com、名稱為 GetEndorsingBoarder。
可以使用 Versa(一種 RDF 查詢語言)來實(shí)現(xiàn)這一查詢,如清單 3 所示。

清單 3:給定進(jìn)入的 Web 服務(wù)請求條件,從資源庫中檢索代碼模塊的一個(gè) Versa 查詢

 1  $port = filter(
 2    type(wsdl:Port),
 3    ".-soap:address->eq(@'http://snowboard-info.com/EndorsementSearch')",
 4    ".-wsdl:binding->*
 5      -wsdl:operation->*
 6      -wsdl:soapAction->eq(@'http://snowboard-info.com/EndorsementSearch')",
 7    ".-wsdl:binding->*
 8      -wsdl:operation->*
 9      -wsdl:abstractOperation->*
10      -wsdl:input->*
11      -wsdl:part->*
12      -wsdl:element->*
13      -xsd:name->eq('GetEndorsingBoarder')",
14    ".-wsdl:binding->*
15      -wsdl:operation->*
16      -wsdl:abstractOperation->*
17      -wsdl:input->*
18      -wsdl:part->*
19      -wsdl:element->*
20      -xsd:namespace->eq(@'http://snowboard-info.com')"
21  );
22 
23  ((($port<-wsdl:port-*)<-wsdl:service-*)<-wsdl:description-*)
24     -wsdl:implementation->*

這只是介紹了 Versa 的一點(diǎn)皮毛,總體上,它是一種非常簡單的查詢語言(請參閱參考資料尋找教程的鏈接)。為了使解釋脈絡(luò)清楚,我給每行都標(biāo)上了數(shù)字。第 1 行開始變量賦值(一直延至第 21 行)。我隨意使用了一些空格以加強(qiáng)可讀性。Versa 的核心遍歷表達(dá)式允許您遍歷 RDF 圖。

$foo - a:predicate -> *

 這是向前的遍歷,它按照謂詞(a:predicate)從給定的主語 foo 檢索模型中的所有可以以這種方式找到的賓語。您可以用布爾表達(dá)式(比如 eq("bar"))替換 * 字符來進(jìn)一步細(xì)化結(jié)果賓語,這樣就只能與文字為 bar 的字符串匹配。接下來,您可以象下面這樣把結(jié)果賓語用作鏈狀遍歷表達(dá)式的起點(diǎn):

$start-wsdl:binding->*
      -wsdl:operation->*
      -wsdl:soapAction->eq(@'http://snowboard-info.com/EndorsementSearch')

只要這些動(dòng)作是帶 URL http://snowboard-info.com/EndorsementSearch 的資源,就可以這樣檢索起始資源的綁定操作的所有 SOAP 動(dòng)作。Versa 中資源可以寫成限定名(<wsdl:binding>),或者把資源 URI 放在引號中,并在前面加上一個(gè) @ 字符(例如,@'http://schemas.xmlsoap.org/wsdl/')。

您也可以以謂詞的相反方向進(jìn)行遍歷,也就是說,使用一個(gè)回退遍歷,從主語到賓語:

$foo <- a:predicate - *

當(dāng)您從定義過的 $port 變量回退到與它間接相關(guān)的抽象 Web 服務(wù)資源時(shí),您將會看到清單 3 中第 23 行的這個(gè)動(dòng)作。接著,為了獲取您正在尋找的代碼模塊名,您可以從該資源向前移到它的實(shí)現(xiàn)。

type() 函數(shù)檢索所有給定的 <rdf:type> 資源的列表。filter() 函數(shù)會以列表作為開始,并根據(jù)一組規(guī)則不斷細(xì)化。它只遍歷滿足所有條件的列表項(xiàng)。第 2 行是第一個(gè)參數(shù),給出了初始列表,而其余 4 個(gè)參數(shù)分別從第 3 行、第 4 行、第 7 行和第 14 行開始,這些參數(shù)表示我們已經(jīng)設(shè)定的條件(即,具有指定的 SOAP 動(dòng)作、SOAP 端點(diǎn)、文檔元素名和名稱空間的描述)。

結(jié)束語

正如您所看到的,Web 服務(wù)和 RDF 方面的進(jìn)展不僅為那些想要利用兩者的開發(fā)者提供了更豐富的工具,而且雙方努力之間的合作精神也更為完美。使用 SQL 查詢,或?qū)φ找恍?WSDL 數(shù)據(jù)綁定的 API 調(diào)用足以容易的復(fù)制我所演示的 WSDL 元數(shù)據(jù)的 RDF 查詢,但是使用 RDF 的好處在于,我們可以混合 WSDL 和其它基于 RDF 的重要的元數(shù)據(jù),包括內(nèi)容描述和聯(lián)合格式(例如 Prism 和 RSS)、私有簡檔(例如 P3P)以及其它新興的 RDF 應(yīng)用程序。Web 服務(wù)信息管理越一般化,改進(jìn)集成就越容易提高效率。

 參考資料

以前在 IBM developerWorks 發(fā)表的相關(guān)文章

  • 請單擊文章上部或下部的討論參加關(guān)于本文的討論論壇
  • Introduction to RDF(作者 Uche Ogbuji)提供了對 RDF 的基本介紹,還包括指向其它有用資源的鏈接。
  • 借助 RDF 增強(qiáng) WSDL:管理結(jié)構(gòu)化的 Web 服務(wù)元數(shù)據(jù)(作者 Uche Ogbuji)。
  • SOAP 與RDF(作者 Uche Ogbuji)。

Uche Ogbuji 的其它相關(guān)文章

  • WSDL and the Wild, Wild West ,關(guān)于應(yīng)用程序開發(fā)趨勢(Application Development Trends)方面。
  • Powering Web Services Through Metadata,關(guān)于 Web 服務(wù)體系結(jié)構(gòu)設(shè)計(jì)(Web Services Architect)方面。

WSDL 鏈接

  • WSDL 1.1 現(xiàn)在被保留為 W3C 備忘錄。
  • Web Services Description Working Group W3C Web Services Activity 的組成部分,負(fù)責(zé)開發(fā) Web 服務(wù)的標(biāo)準(zhǔn)描述語言,對它來說最可能的起點(diǎn)就是 WSDL 1.1。

RDF/Web 服務(wù)參考資料

  • 請閱讀 WSDL/RDF mapping(作者 Eric Prud'hommeaux),是他根據(jù)我從前在 developerWorks 上對這兩種技術(shù)之間的映射的研究進(jìn)行了探索。是對他在前一頁面 Annotated RDF WSDL Examples 上所提出的觀點(diǎn)的提煉。
  • Eric 還維護(hù)著與 Semantic Web 和 Web 服務(wù)有關(guān)的資源列表。
  • W3C Semantic Web 活動(dòng)主頁上的相關(guān)技術(shù)的 RDF 部分包括一個(gè)有關(guān) Web 服務(wù)和 RDF 的部分,其中有我在 developerWorks 上發(fā)表的關(guān)于 SOAP/RDF 和 WSDL/RDF 文章。
  • Dave Beckett 的 RDF Resource Guide 簡明扼要,并包括一些相關(guān)的參考資料。

其它參考資料

  • 若需要 Versa 的詳盡介紹,請參閱我的循序漸進(jìn)教程:Versa by Example。
  • Web Services Development and Deployment with IBM Tools and Technologies(作者 Greg Flurry),講述了各種 WebSphere 組件在 Web 服務(wù)開發(fā)方面的應(yīng)用,包括創(chuàng)建 WSDL 描述。

關(guān)于作者

Uche Ogbuji 是
Fourthought Inc. 的顧問兼創(chuàng)始人,該公司是專為企業(yè)知識管理應(yīng)用提供 XML 解決方案的軟件供應(yīng)商和顧問。Fourthought 開發(fā)了 XML 中間件開放源代碼的平臺 4Suite。Ogbuji 先生是一名出生于尼日利亞的計(jì)算機(jī)工程師和作家,他生活和工作在美國科羅拉多州的博耳德。您可以通過 uche.ogbuji@fourthought.com 與 Ogbuji 先生聯(lián)絡(luò)。

發(fā)布:2007-03-25 13:27    編輯:泛普軟件 · xiaona    [打印此頁]    [關(guān)閉]
相關(guān)文章:
石家莊OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號1層9號

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費(fèi)獲取試用系統(tǒng)

QQ在線咨詢