監(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)閉

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

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

AMTeam.org

借助RDF增強(qiáng)WSDL

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

Uche Ogbuji

Fourthought 公司首席顧問(wèn)

2000 年 11 月

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

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

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

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

RDF 和 WSDL 本可能會(huì)是...

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

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

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


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)(請(qǐng)參閱參考資源)所要求的那樣, 這個(gè)部分包括在 rdf:RDF 元素中。如果將它輸入 RDF 處理器,您將獲得大量信息,這些信息勾劃出組成 WSDL 說(shuō)明的限制條件和關(guān)系。 我使用可用的每個(gè) RDF 序列化技巧將對(duì)原始 XML 結(jié)構(gòu)的更改減到最少。 它很好地說(shuō)明了 RDF 工作組必須對(duì) RDF M&S 進(jìn)行多么艱苦的處理,才能使現(xiàn)有的 XML 格式歸結(jié) 到有效的 RDF 形式中。請(qǐng)注意,這一點(diǎn)也是引起極大爭(zhēng)議的原因,因?yàn)橛性S多可用的技巧使得從各種語(yǔ)法和所生成的 RDF 抽象模型的轉(zhuǎn)換具有一定的脆弱性。

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

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

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

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

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

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

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

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

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

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

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

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

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

XML 的多個(gè)方面

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

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

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

用于 WSDL 的 RDF Schema?

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

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

清單 3. RDF Schema 的范圍約束




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

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

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

掌握 XSLT...

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

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

參考資源

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

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

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

要進(jìn)一步提高您的 RDF 水平,請(qǐng)?jiān)囈辉囘@篇教程。

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

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

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

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

關(guān)于作者

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

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

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

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

咨詢:400-8352-114

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

QQ在線咨詢