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

借助RDF增強(qiáng)WSDL--管理結(jié)構(gòu)化的Web服務(wù)元數(shù)據(jù)

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

AMTeam.org

借助RDF增強(qiáng)WSDL

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

Uche Ogbuji

Fourthought 公司首席顧問

2000 年 11 月

“資源描述框架”是萬維網(wǎng)聯(lián)盟用于定義 XML 對象的元數(shù)據(jù)的正式格式。從概念上講,它與“Web 服務(wù)描述語言”很相似,后者是有關(guān)基于 XML 的服務(wù)的元數(shù)據(jù)集合。本文集中討論在這兩種規(guī)范之間架設(shè)一座橋梁。 本文首先用一個示例說明用 RDF 文件表示的 Web 服務(wù)描述可能具有什么樣的形式,接著討論如何 利用 RDF 可視化工具生成 WSDL 數(shù)據(jù)的圖形。最后,本文給出了 WSDL 的一種可能的 RDF Schema 的一部分。

Web 服務(wù)描述語言 (WSDL)(請參閱“參考資源”)規(guī)范提供了一個基于 XML 的簡單語匯表,用來描述可通過網(wǎng)絡(luò)提供的基于 XML 的 Web 服務(wù)。這些服務(wù)本身使用簡單對象訪問協(xié)議 (SOAP)、HTTP、SMTP 或通過其他方式進(jìn)行通信;而 WSDL 為用戶提供設(shè)置這些通信所需的元數(shù)據(jù)。WSDL 本身不規(guī)定如何發(fā)布或公布這種服務(wù)描述,而是將這項任務(wù)留給其他規(guī)范。“通用描述、發(fā)現(xiàn)和集成 (UDDI)”是用來創(chuàng)建 Web 服務(wù)目錄的一個倡議,它定義了對 WSDL 描述進(jìn)行編目和調(diào)度的一個框架,但是它剛剛出現(xiàn)而且相當(dāng)復(fù)雜。

UDDI 是對在線合同的一個巨大促進(jìn),理應(yīng)很快在分布式服務(wù)領(lǐng)域占據(jù)一席之地。不過,因為最初的 WSDL 部署很可能在嚴(yán)格封閉的系統(tǒng)中,而不是在開放的 Web 上,所以可能會有一種更好的替代方案。有一種較早的更自然的方法用于以資源描述框架 (RDF) 形式進(jìn)行 WSDL 編目和發(fā)現(xiàn)。RDF 是由萬維網(wǎng)聯(lián)盟 (W3C) 開發(fā)的一種機(jī)制,用來對 Web 元數(shù)據(jù)進(jìn)行編碼和管理(請參閱“參考資源”)。它提供一些簡單的方法來集成多個域中的大量元數(shù)據(jù)。

為了有助于理解本文,您可能需要閱讀我的前一篇文章,"Using WSDL with SOAP Applications"(請參閱“參考資源”),在那篇文章中我通過一個具體的示例分析了 WSDL 規(guī)范的功能,那個示例說明測雪板專家為他們行業(yè)的廠商提供認(rèn)可的一項服務(wù)。本文討論借助 RDF 的簡單性和強(qiáng)大功能增強(qiáng) WSDL 的描述能力。為了熟悉 RDF、RDF Schema 以及 RDF 的基本 XML 表示(這對于理解本文后面的部分非常重要),請回顧“參考資源”部分有關(guān) RDF 信息的鏈接。

RDF 和 WSDL 本可能會是...

WSDL 提供的一切本來完全可以用 RDF 序列化格式編寫。IBM、Microsoft 和 Ariba 未考慮到這一點(diǎn)而作出了一個奇怪的選擇。其他有點(diǎn)類似的標(biāo)準(zhǔn),如 RDF Site Summary (RSS),說明如何將 XML 資源描述格式表示為 RDF 的 XML 序列化。 這并非對所有標(biāo)準(zhǔn)都有意義 -- 比如說,人們幾乎不會期望 Scalable Vector Graphics (SVG) 工作組 圍繞 RDF 設(shè)計 SVG。但是,當(dāng)大多數(shù)信息表示簡短標(biāo)簽和資源之間的關(guān)系時,RDF 因其不斷增加的用戶和工具而變得很有意義。

例如,我已經(jīng)使用上面討論的一個 WSDL 規(guī)范修改了測雪板示例,以便使用 RDF 序列化格式,如清單 1 所示。

清單 1:測雪板認(rèn)可搜索的 WSDL 描述在用有效的 RDF 語法表示時的形式。


targetNamespace="
http://namespaces.snowboard-info.com"
xmlns:es="
http://www.snowboard-info.com/EndorsementSearch.wsdl"
xmlns:esxsd="
http://schemas.snowboard-info.com/EndorsementSearch.xsd"
xmlns:soap="
http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:w="
http://schemas.xmlsoap.org/wsdl/"
xmlns="
http://schemas.xmlsoap.org/wsdl/">

xmlns="
http://www.w3.org/1999/XMLSchema">























rdf:ID="GetEndorsingBoarderRequest">

rdf:ID="GetEndorsingBoarderResponse">

rdf:ID="GetEndorsingBoarderPortType">







w:type="es:GetEndorsingBoarderPortType"
rdf:ID="EndorsementSearchSoapBinding">
soap:transport="
http://schemas.xmlsoap.org/soap/http"/>

soap:soapAction="
http://www.snowboard-info.com/EndorsementSearch"/>

soap:namespace="
http://schemas.snowboard-info.com/EndorsementSearch.xsd"/>


soap:namespace="
http://schemas.snowboard-info.com/EndorsementSearch.xsd"/>


soap:namespace="
http://schemas.snowboard-info.com/EndorsementSearch.xsd"/>




rdf:ID="EndorsementSearchService">
snowboarding-info.com Endorsement Service


>


這些更改基本上是抽取描述的一部分并將其編碼為 RDF 序列化。正如 RDF Model and Syntax 1.0 Recommendation (RDF M&S)(請參閱參考資源)所要求的那樣, 這個部分包括在 rdf:RDF 元素中。如果將它輸入 RDF 處理器,您將獲得大量信息,這些信息勾劃出組成 WSDL 說明的限制條件和關(guān)系。 我使用可用的每個 RDF 序列化技巧將對原始 XML 結(jié)構(gòu)的更改減到最少。 它很好地說明了 RDF 工作組必須對 RDF M&S 進(jìn)行多么艱苦的處理,才能使現(xiàn)有的 XML 格式歸結(jié) 到有效的 RDF 形式中。請注意,這一點(diǎn)也是引起極大爭議的原因,因為有許多可用的技巧使得從各種語法和所生成的 RDF 抽象模型的轉(zhuǎn)換具有一定的脆弱性。

我未將 types 元素包括在 RDF 部分。主要問題是這部分內(nèi)容實際上完全超出了 WSDL 的范圍。W3C 或其他 Web 標(biāo)準(zhǔn)組織可能提出一個將 XML 方案映射到 RDF 的標(biāo)準(zhǔn),并且其他數(shù)據(jù)分類方法可能完成相同的工作,但它實際上屬于完全不同的另一范疇的工作。 types 描述可能仍然可通過指定 parseType="Literal" 屬性完全插入 RDF 模型中,但我們同時必須面對隨 parseType="Literal" 而來的所有問題: 尤其是,RDF M&S 明確禁止包含標(biāo)記的文字之間的等價定義(例如,它可能這樣規(guī)定,如果帶有標(biāo)記的兩段文字約簡到正規(guī) XML 以后完全相同,則它們等價)。這意味著我們永遠(yuǎn)無法對以 RDF 模型存儲的數(shù)據(jù)與任何其他數(shù)據(jù)進(jìn)行可靠的比較。在實際應(yīng)用中,這使得 parseType="Literal" 毫無用處,所以我也就沒管它。

在被轉(zhuǎn)換為 RDF 的部分中,最顯著的更改是在核心 WSDL 元素中添加了 rdf:ID 屬性。 這是 RDF 對 WSDL 作者對屬性中的限定名執(zhí)行的操作的處理方式:建立抽象實體之間的關(guān)系。通過使用 rdf:resource 屬性就可以看到在何處生成對這些已標(biāo)識資源的引用。

您會注意到的另一個更改是,所有以前無前綴的屬性現(xiàn)在都添加了一個前綴。RDF 縮寫允許將 namespace-resolved 屬性當(dāng)作特性名對待。屬性值則成為語句的文字值。 在清單 1 中我大量使用了此縮寫。RDF 并不嚴(yán)格要求特性名的名稱空間,但極力建議將它作為消除這些名稱的歧義的方法。如果您準(zhǔn)備將此 WSDL 元數(shù)據(jù)放入包含其他信息的模型中,則常用的標(biāo)簽(如 "name")很有可能與另一個特性表示(比如說,人名或組織名)發(fā)生沖突。因為 XML Namespaces 1.0 不允許應(yīng)用程序?qū)⑷笔∶Q空間用作屬性,所以我們必須明確地指定前綴來消除歧義。

在某些情況下(如消息部分),我使用匿名資源。請注意,message/part 元素有 property 屬性,但沒有 rdf:ID 或 rdf:about 屬性。我選擇這樣做是因為在我看來,很少需要引用消息上下文之外的消息部分,而且只有此操作才需要讓它為非匿名。否則,我就不得不構(gòu)造一個唯一的 ID(不像頂級資源那樣自然),并在 rdf:about 屬性中使用 XPointer,或某個其他技巧。我只是跟著最自然的感覺走。

最后幾點(diǎn)注意事項。您可以看到,我在 service 元素中使用 rdf:about 添加了一條語句,這條語句涉及我以前作為其主題說明的那個端口。這是利用 RDF 語法的靈活性將對原始 WSDL 的更改減至最少的另一個示例。此外,您可以看到 RDF 描述的任意嵌套是多么有用,它允許我們的 binding 元素版本保留它原始的結(jié)構(gòu)。

WSDL 的詳細(xì)圖形表示,多虧 RDF

最后,根據(jù)我們分析過的 WSDL 1.0 規(guī)范,我上面的示例并不是有效的 WSDL。幸運(yùn)的是,從正式語法生成 RDF 非常簡單,既可以通過提供 WSDL 文檔中數(shù)據(jù)的同一來源中的自動化處理生成, 也可以使用 XSLT 生成(我的下一篇關(guān)于 WSDL 的文章將提供其實現(xiàn)方式的示例)。我在本文中提供的 RDF 表示仍然有用,因為它提供了用 WSDL 編碼的元數(shù)據(jù)的一個具體 RDF 模型。我認(rèn)為這離掌握全部相關(guān)和實用的語句已相當(dāng)接近了。這樣,使用從 WSDL 中抽取的任何特定 RDF 語法來構(gòu)造相同的模型就是一件簡單的事了。

WSDL 的 RDF 模型的一大優(yōu)點(diǎn)是它直接導(dǎo)致 WSDL 模型所指定內(nèi)容的方便可視化。通過將元數(shù)據(jù)映射到 RDF,我已將它套進(jìn)一種形式化中,RDF M&S 為此形式化提出了一種有用的表示作為定向圖。如要看實際操作,請轉(zhuǎn)到 Dan Brickley 的卓越的 RDF 可視化工具(請參閱“參考資源”),并在 URL 文本框中輸入下面的 URL:

http://www-4.ibm.com/software/developerWorks/library/ws-rdf/endorse.rdf。

我已將要查看的文檔的一個副本列在清單 1 中。

請快速瀏覽一下生成的圖形。如果使用可視化工具的 GIF 輸出,看它需要費(fèi)點(diǎn)勁,所以如果您有諸如 Adobe SVG Plug-in(請參閱參考資源)之類的查看器,我建議使用 SVG 輸出。此外,您也可以從這個觀測器站點(diǎn)生成 2 維虛擬現(xiàn)實標(biāo)記語言 (VRML)。請注意,已為匿名資源分配了一個生成的統(tǒng)一資源標(biāo)識符 (URI),這個標(biāo)記符對于 RDF 工具很有用,盡管它與 RDF M&S 中給出的圖形樣例有所不同,在 RDF M&S 中匿名資源用空橢圓表示。例如,分配到的 URI 包含在第一個 message 元素中的匿名端口資源是:

http://www-4.ibm.com/software/developerWorks/library/ws-rdf/endorse.rdf#genid3。

另請注意,顯式繪制的 rdf:type 屬性,在清單 1 中是使用分類節(jié)點(diǎn)隱式繪制的,而沒有使用 rdf:description 元素。

XML 的多個方面

臨時搭起傳道者的講壇,這正是 XML 及其相關(guān)技術(shù)如此激動人心的原因。不老到的數(shù)據(jù)處理人員很少會認(rèn)識到 WSDL、RDF 和其他這類技術(shù)中驚人的洞察力和獨(dú)創(chuàng)性。具有革命性的不是數(shù)據(jù)格式、抽象模型或介于二者之間的任何東西,而是在各種適合的系統(tǒng)之間協(xié)作的能力,這使得如此多的人聚集在 XML 數(shù)據(jù)處理的旗幟之下。

這意味著我,一個自稱懶惰的程序員,可以很快熟悉一個新的服務(wù)描述語言,WSDL,并快速將它揉合為 RDF 中的一種形式。在某些情況下(如 RSS),這一點(diǎn)已經(jīng)實現(xiàn)了。通過使用現(xiàn)成的工具,我可以創(chuàng)建原來所描述的抽象的一種全面可視化。

針對 RDF 和 W3C 對它的聲明存在一些爭論,但我們對 WSDL 的剖析應(yīng)該能夠表明,不管您對 RDF 及其眾所周知的不足有什么看法,它是可用于使元數(shù)據(jù)會談?wù)_開始的一個大型圓桌會議。使 XML 團(tuán)體第一次變得非常重要的一件事情似乎是對跨企業(yè)的可擴(kuò)展性的承諾,這使得這種協(xié)作變得更現(xiàn)實。好了,我們現(xiàn)在閑言少敘,言歸正傳。

用于 WSDL 的 RDF Schema?

圖中揭示的類型特性暗示了一種用于 WSDL 的 RDF Schema,該方案可用作轉(zhuǎn)換為一種 RDF 模型的形式框架。WSDL 規(guī)范仍然不提供任何 RDF Schema,但在清單 2 中我對其中的原因提出了最恰當(dāng)?shù)慕ㄗh。它并不是 WSDL 的一個完整 RDF Schema;它只包含清單 1 中的示例的一個子集,而此子集又只使用了 WSDL 的一個子集,但這可望成為進(jìn)一步工作的基礎(chǔ)。

應(yīng)注意的第一點(diǎn)是,大小寫與 RDF Schemas Candidate Recommendation (RDF Schemas) 中使用的約定不一致。這是為了避免改變 WSDL 所用的元素類型名。除此之外,它還是循環(huán)的方案。只要 WSDL 對描述元素之間的內(nèi)部關(guān)系有相應(yīng)的限制,我就使用 domain- 和 range- 約束。因此,舉例來說,因為 WSDL 輸入元素中的消息屬性的值必須是消息名,所以 RDF Schema 使用清單 3 中代碼段的等價范圍約束。

清單 3. RDF Schema 的范圍約束




上面的范圍約束確保輸入特性只能在操作元素中使用,這也是 WSDL 的一個約定。

但是,請注意,其中許多約束并不是它們所能達(dá)到的最強(qiáng)約束。例如,元素屬性指明消息部分使用的類型部分中的特定元素。該特性的值實際上應(yīng)該是一個有效的 qname。例如,我們不能將字符串 "!!42xyz??" 設(shè)置為該特性的值,因為它甚至不是一個有效的 XML 元素類型名,但是因為我們將 rdfs:Literal 用作該特性的范圍,所以 RDF 處理器將會容忍這種錯誤。不幸的是,RDF Schema 幾乎沒有提供對數(shù)據(jù)分類的支持,這個任務(wù)留給了以后的版本,那個版本將能夠利用 XML Schema 小組的工作。

出于策略方面的考慮,為了保持簡單,我選擇我的子集不包括 SOAP 操作。為了使特定于 SOAP 的語句處在它們自己的名稱空間中,看來很可能必須有另一個 RDF Schema 文件用于這些類和特性,而且必須借助發(fā)布這些方案的 WSDL 作者的一些幫助。但是,再強(qiáng)調(diào)一次,RDF Schema 的任何使用,包括我在本文中設(shè)置的框架,都需要擁有基準(zhǔn) "http://schemas.xmlsoap.org/wsdl" URL(請參閱參考資源)的 WSDL 作者的某些幫助。大多數(shù) RDF 處理器,包括我在本文中使用的 4RDF,可以幫助開發(fā)人員避開這個問題,它允許開發(fā)人員映射和覆蓋基準(zhǔn) URI。其他 RDF 處理器或許也可以完成這一工作。

掌握 XSLT...

正如本文所述,通過將 WSDL 映射到 RDF,就可將服務(wù)描述自動合并到識別 RDF 的搜索引擎和分類系統(tǒng)中。W3C 已經(jīng)利用它的巨大影響力鼓勵廠商和網(wǎng)站管理員使用 RDF 對他們的內(nèi)容進(jìn)行分類,這將提高嵌入式服務(wù)描述的價值。如果是這樣,那么 "services Web"(盜用 XML 評論員 Len Bullard 的一個術(shù)語)的白頁和黃頁就會變得像限制為 WSDL 方案的 RDF 搜索一樣簡單。比 UDDI 用戶拼裝的巨大框架簡單得多,但這完全是另一個話題。

文本可望使您對如何借助可用于 RDF 的現(xiàn)有工具來體驗 WSDL 有所領(lǐng)悟。我們看過了用 WSDL 編碼的元數(shù)據(jù)關(guān)系的內(nèi)部結(jié)構(gòu),RDF 轉(zhuǎn)換使這一點(diǎn)更加清晰。我們也了解了從非 RDF 的 XML 語匯表導(dǎo)出 RDF Schema 和實例的一般過程。 在下一篇文章中,我們將會看到 W3C 的另一項核心技術(shù)(即 XSLT)能為 WSDL 開發(fā)人員和用戶做哪些工作。

參考資源

我的前一篇文章, Using WSDL with SOAP Applications,說明了 WSDL 的工作方式以及它如何應(yīng)用到基于 SOAP 的應(yīng)用程序編程

回顧 Web 服務(wù)描述語言 (WSDL) 規(guī)范。

W3C 維護(hù)著一個 RDF 信息網(wǎng)頁,您可以從該網(wǎng)頁獲得進(jìn)一步的信息。

要進(jìn)一步提高您的 RDF 水平,請試一試這篇教程。

我使用 Dan Brickley 的令人驚奇的 RDF visualizer 生成了我們剛討論過的 WSDL 描述的圖像,格式為 GIF (141 KB) 和 SVG (27 KB)(要查看該文件請下載 Adobe SVG plug-in。安裝插件程序后,在插件程序或 Web 瀏覽器中打開任一個 RDF 文件來以圖形方式查看它)。RDF 源代碼是本文中的清單 1,我也提供了它的一個副本。

您可能也對將 RDF 方案可視化工具用于清單 2 感興趣。

W3C 的 SVG 網(wǎng)頁上有許多 SVG 資源。

我使用 4RDF 處理并測試本文的 RDF 文件和方案,圖形生成除外。

關(guān)于作者

Uche Ogbuji 是 Fourthought 公司的顧問和創(chuàng)始人之一,該公司是一家專門研究企業(yè)知識管理應(yīng)用程序的 XML 解決方案的咨詢公司。Fourthought 開發(fā)出 4Suite,這是一個 XML 中間件的開放源碼平臺。Ogbuji 先生是一位計算機(jī)工程師和作家,它出生于尼日利亞,現(xiàn)在居住在美國科羅拉多州的 Boulder,并在那里工作??梢酝ㄟ^ uche@fourthought.com 與他聯(lián)系。

發(fā)布:2007-03-25 13:26    編輯:泛普軟件 · 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在線咨詢