當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 河北O(jiān)A系統(tǒng) > 石家莊OA系統(tǒng) > 石家莊OA信息化
管理結(jié)構(gòu)式Web服務(wù)元數(shù)據(jù)
管理結(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 描述。
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ò)。
- 1復(fù)明集團(tuán)網(wǎng)上審批管理OA辦公軟件系統(tǒng)系統(tǒng) V1.0 ...
- 2源天軟件獲2008年度中國IT服務(wù)創(chuàng)新獎(jiǎng)
- 3Web Services 及其技術(shù)(上)
- 4石家莊OA信息化的基本XML和RDF技術(shù)(四):問題跟蹤程序模式
- 5泛普OA軟件支持在線直接發(fā)送消息、傳送文件、音頻會話等
- 6石家莊OA軟件的征求意見和民意調(diào)查
- 7互聯(lián)網(wǎng)聯(lián)盟(W3C )發(fā)布Web服務(wù)體系新規(guī)范草案
- 8[理論] 如何根據(jù)業(yè)務(wù)過程選擇知識應(yīng)用模式?(夏敬華)
- 9Sun拒入“WS-I” 不想跟微軟IBM玩游戲
- 10架構(gòu)Web Service:交互界面,Web服務(wù)定義的核心
- 11如何讓知識員工忠字當(dāng)頭?
- 12Web服務(wù)設(shè)計(jì)師,第5部分:基于付費(fèi)Web服務(wù)的障礙
- 13源天榮獲“2008中國信息產(chǎn)業(yè)年度高成長性企業(yè)”稱號
- 14再次跨越障礙--重新審視XML中的語義透明性
- 15The DECOR Project:Workflow-Embedded Organizational Memory Ac
- 16石家莊OA知識歸檔管理與快速查詢管理
- 17企業(yè)CIO剖析中小企業(yè)信息化發(fā)展建設(shè)盲點(diǎn).
- 18如何認(rèn)識和實(shí)施石家莊OA信息化系統(tǒng)的集成(BY AMT 夏敬華)
- 19石家莊OA信息化的價(jià)值和挑戰(zhàn)
- 20Web服務(wù)的“租用”本質(zhì)
- 21bindingTemplate與Web服務(wù)調(diào)用
- 22觀點(diǎn):微軟的下個(gè)效仿對象是惠普
- 23XML Web Service-Enabled Office Documents
- 24W3C發(fā)表WSDL 1.2規(guī)范
- 25由 80/20 法則突破「知識分享」的心防
- 26Web服務(wù)的(革)創(chuàng)新,第3部分
- 27有一個(gè)綜合性學(xué)術(shù)資源檢索站點(diǎn),不錯(cuò)!
- 28協(xié)同辦公系統(tǒng)整合了多層次的安全控制方案
- 29超越石家莊OA信息化
- 30在ASP程序中調(diào)用Web Service
成都公司:成都市成華區(qū)建設(shè)南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓
版權(quán)所有:泛普軟件 渝ICP備14008431號-2 渝公網(wǎng)安備50011202501700號 咨詢電話:400-8352-114