當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 湖北O(jiān)A系統(tǒng) > 武漢OA系統(tǒng) > 武漢OA信息化
武漢OA信息化的基本XML和RDF技術(shù)(二):將文件合并到RDF模型和基本的RDF查詢
申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114
AMTeam.org知識(shí)管理的基本XML和RDF技術(shù)(二) : 將文件合并到RDF模型和基本的RDF查詢
Uche Ogbuji(
首席顧問(wèn),F(xiàn)ourthought, Inc.
2001 年 9 月
這篇“Thinking XML”專欄文章演示了如何將從多個(gè) XML
源文檔中收集的元數(shù)據(jù)合并到用于有效查詢的單個(gè)“資源描述框架”(Resource Description Frame (RDF))模型中。專欄作家 Uche
Ogbuji 在前一篇中介紹了如何一起使用 XML 和 RDF 來(lái)進(jìn)行知識(shí)管理,本文是上一篇的繼續(xù),在本文中他論述了基于用從現(xiàn)有的 XML 格式獲取的數(shù)據(jù)組成
RDF 模型的技術(shù)。該文的中心是一個(gè)示例,在該示例中,擴(kuò)展基于 Web 的問(wèn)題跟蹤器(最初開(kāi)發(fā)它來(lái)操縱 XML 格式的應(yīng)用程序數(shù)據(jù))來(lái)利用 RDF。XSLT 和
Python 樣本代碼清單演示了將來(lái)自 XML 文件的元數(shù)據(jù)聚合到單個(gè) RDF 模型(一個(gè)使用 XSLT ,另一個(gè)使用 RDF)以及簡(jiǎn)單 RDF
查詢的示例。
在本專欄的前一篇文章中,即知識(shí)管理的基本 XML 和 RDF
技術(shù),第一部分(在繼續(xù)閱讀之前,可能需要重新回顧一下),介紹了一個(gè)基于收集的數(shù)據(jù)(以 XML 格式表示)的問(wèn)題跟蹤器應(yīng)用程序示例。然后演示了如何使用 XSLT
從應(yīng)用程序數(shù)據(jù)中抽取 RDF。
本專欄文章通過(guò)演示如何組合由轉(zhuǎn)換每個(gè) XML 源文檔所創(chuàng)建的離散的 RDF 片段來(lái)完成這些事情。同時(shí)還演示了一些基本的查詢技術(shù)。
資源批量派生
在上篇專欄文章中,完成了一個(gè)從 XML
源文件中抽取作為序列化格式的 RDF 的練習(xí)。然而,知識(shí)管理的大多數(shù)有用之處在于操縱 RDF 語(yǔ)句的抽象模型,而不是個(gè)別序列化文件。RDF
模型是圖形結(jié)構(gòu),該結(jié)構(gòu)可以非常簡(jiǎn)單也可以令人難以置信的復(fù)雜。(事實(shí)上,極端情況下,Semantic Web 的設(shè)想是要?jiǎng)?chuàng)建至少同當(dāng)前 Web 一樣大的 RDF
模型。如果實(shí)現(xiàn)該模型的話,它可能是曾經(jīng)在使用中的最大的計(jì)算機(jī)數(shù)據(jù)結(jié)構(gòu)。)
迄今為止,問(wèn)題跟蹤器的示例是由一組 XML 文件組成的,這些文件是 RDF 模型各部分的序列化。每一部分就象七巧板中的一塊,如果將它們組合到一塊兒,將表示問(wèn)題跟蹤器應(yīng)用程序中所有數(shù)據(jù)的 RDF 模型。每一部分本身并不十分重要,因此下一步來(lái)討論如何創(chuàng)建一幅完整的“圖畫”,該“圖畫”才是知識(shí)管理的真正價(jià)值所在。
使用 XSLT
進(jìn)行批量轉(zhuǎn)換
拼裝該“圖畫”的一種選擇是根本不處理七巧板塊,而是使用 XSLT
一勞永逸地生成該“圖畫”。可以編寫一個(gè)轉(zhuǎn)換,該轉(zhuǎn)換收集每個(gè) XML 問(wèn)題文檔,并運(yùn)用前一篇文章中所描述的 RDF 轉(zhuǎn)換處理,然后將每次轉(zhuǎn)換結(jié)果累積到一個(gè)序列化
RDF 結(jié)果。要做到這一點(diǎn),需要利用標(biāo)準(zhǔn)的 document() XSLT 函數(shù),該函數(shù)可以讀入任意的文檔,這些文檔是作為用于轉(zhuǎn)換的補(bǔ)充性 XML
源文檔。
document() 函數(shù)需要知道所要讀入文檔的準(zhǔn)確名稱。XSLT 沒(méi)有(比如說(shuō))通過(guò)使用通配符來(lái)讀入多個(gè)文檔的標(biāo)準(zhǔn)機(jī)制??梢酝ㄟ^(guò)許多方法解決這一問(wèn)題(包括借助于 XSLT 擴(kuò)展,該擴(kuò)展允許通過(guò)通配符或其它機(jī)制來(lái)批量裝入文檔)。然而,因?yàn)檫@不是本示例的中心問(wèn)題,所以選擇創(chuàng)建帶有每個(gè)問(wèn)題文檔清單的集中(hub) XSLT 文檔這項(xiàng)折中方案。清單 1 issue-hub.xml 用指定的兩個(gè)問(wèn)題文檔(在前一篇專欄文章中介紹過(guò))來(lái)演示集中文檔是什么樣子的。
清單 1:帶有每個(gè)應(yīng)用程序數(shù)據(jù)文檔的問(wèn)題文檔清單的集中 XML 文檔。
issue1.xml
issue2.xml
一旦有了集中文檔,就可以將清單 2 metadata-batch.xslt 中的轉(zhuǎn)換應(yīng)用到作為源文檔的集中文檔中以從所有列出的問(wèn)題中創(chuàng)建聚合 RDF。
清單 2 看起來(lái)可能非常熟悉;其中大多數(shù)同前一篇文章中的轉(zhuǎn)換相同。這是因?yàn)槲液芰粢?XML 結(jié)構(gòu)的模塊化處理。根模板現(xiàn)在從集中文檔中查找每個(gè) issue 元素(注意,這里使用空名稱空間)。然后它從每個(gè)元素內(nèi)容中指定的文件名裝入文檔。注意,這里使用 document(.)/* 而不僅僅是 document(.)。這種構(gòu)造防止處理器匹配問(wèn)題文檔的根節(jié)點(diǎn),這會(huì)結(jié)束調(diào)用打算用于集中文檔根節(jié)點(diǎn)的模板。那些正是本專欄文章的批量轉(zhuǎn)換中的唯一區(qū)別。
可以使用任何 XSLT 處理器來(lái)執(zhí)行該轉(zhuǎn)換。我使用 4XSLT 來(lái)執(zhí)行轉(zhuǎn)換,如下所示:
$ 4xslt -o issues.rdf issue-hub.xml metadata-batch.xslt
該轉(zhuǎn)換導(dǎo)致 issues.rdf 中的序列化 RDF,它包含來(lái)自 issue1.xml 和 issue2.xml 中的元數(shù)據(jù)。
使用 RDF 工具進(jìn)行批量轉(zhuǎn)換
將多個(gè) XML 文檔聚合到單個(gè) RDF
模型中的另一種選擇是(如前一篇文章所述)分別構(gòu)建每個(gè) RDF 文檔,然后使用 RDF
解析器將所有的文檔解析成單個(gè)抽象模型。例如,通過(guò)對(duì)從前面一篇專欄文章中的示例問(wèn)題文件中生成的兩個(gè) RDF 文件使用 4RDF,將得到清單
3。
清單 3:從 XML 文件中派生,并由 RDF 解析器(這里是 4RDF)分析的兩個(gè) RDF 問(wèn)題文件的批量轉(zhuǎn)換結(jié)果
$ 4rdf -d 1.rdf 2.rdf
The following is a list of resulting tuples, each in the form "subject,
predicate, object".
[
("http://meta.rdfinference.org/ril/issue-tracker/ril-20010502",
"http://xmlns.rdfinference.org/ril/issue-tracker#issue",
"#i2001030423"),
("#anonymous:e08-e06-30b-90d-a060005104", "id", "i2001030423"),
("#anonymous:e08-e06-30b-90d-a060005104",
"http://xmlns.rdfinference.org/ril/issue-tracker#author",
"http://users.rdfinference.org/ril/issue-tracker#uogbuji"),
("#anonymous:1040d07-20b-909-407-b0e0402205",
"http://xmlns.rdfinference.org/ril/issue-tracker#author", "Alexandre
Fayolle "),
("#anonymous:1040d07-20b-909-407-b0e0402205",
"http://xmlns.rdfinference.org/ril/issue-tracker#body", "The
abbreviation in listing 8 doesn't seem necessary to Nico Chauvat or
me."),
("#anonymous:e08-e06-30b-90d-a060005104",
"http://xmlns.rdfinference.org/ril/issue-tracker#comment",
"#anonymous:1040d07-20b-909-407-b0e0402205"),
("#anonymous:60e0b06-50a-80c-90c-50a0a08602",
"http://xmlns.rdfinference.org/ril/issue-tracker#author",
"http://users.rdfinference.org/ril/issue-tracker#uogbuji"),
("#anonymous:60e0b06-50a-80c-90c-50a0a08602",
"http://xmlns.rdfinference.org/ril/issue-tracker#assignment",
"http://users.rdfinference.org/ril/issue-tracker#uogbuji"),
("#anonymous:e08-e06-30b-90d-a060005104",
"http://xmlns.rdfinference.org/ril/issue-tracker#action",
"#anonymous:60e0b06-50a-80c-90c-50a0a08602"),
("http://meta.rdfinference.org/ril/issue-tracker/ril-20010502",
"http://xmlns.rdfinference.org/ril/issue-tracker#issue",
"#i2001042003"),
("#anonymous:2030002-506-10a-201-f090809c08", "id", "i2001042003"),
("#anonymous:2030002-506-10a-201-f090809c08",
"http://xmlns.rdfinference.org/ril/issue-tracker#author",
"http://users.rdfinference.org/ril/issue-tracker#nchauvat"),
("#anonymous:c000706-b0b-d02-d0a-e050c0460b",
"http://xmlns.rdfinference.org/ril/issue-tracker#author", "Alexandre
Fayolle "),
("#anonymous:c000706-b0b-d02-d0a-e050c0460b",
"http://xmlns.rdfinference.org/ril/issue-tracker#body", "I agree"),
("#anonymous:2030002-506-10a-201-f090809c08",
"http://xmlns.rdfinference.org/ril/issue-tracker#comment",
"#anonymous:c000706-b0b-d02-d0a-e050c0460b"),
("#anonymous:b0c0c00-800-2-c08-20a0d0f209",
"http://xmlns.rdfinference.org/ril/issue-tracker#author",
"http://users.rdfinference.org/ril/issue-tracker#uogbuji"),
("#anonymous:b0c0c00-800-2-c08-20a0d0f209",
"http://xmlns.rdfinference.org/ril/issue-tracker#assignment",
"http://users.rdfinference.org/ril/issue-tracker#uogbuji"),
("#anonymous:2030002-506-10a-201-f090809c08",
"http://xmlns.rdfinference.org/ril/issue-tracker#action",
"#anonymous:b0c0c00-800-2-c08-20a0d0f209"),
]
清單 3 中第一行里的 -d 選項(xiàng)告訴 $RDF 將 subject/predicate/object 三元組從抽象 RDF 模型轉(zhuǎn)儲(chǔ)到命令行,該命令行顯示清單 3 的剩余部分.
一旦有了問(wèn)題跟蹤器的完整 RDF 模型,可能希望以一種更易于閱讀的格式而不是清單 3 中所顯示的那種格式來(lái)查看它。例如,如果以清單 3 中的聚合 RDF 文件為例,并使用 Dan Brickley 的 RDF 可視化工具(請(qǐng)參閱參考資料)來(lái)處理它。
可以立即辨別出某種模式,譬如用戶“uogbuji”的投稿和職責(zé)。當(dāng)然,我必須承認(rèn) RDF 中隨同 URI 而來(lái)的冗長(zhǎng)的標(biāo)識(shí)符妨礙了這一清晰性。
跨系統(tǒng)查詢
擁有可用元數(shù)據(jù)的 RDF
模型的另外一個(gè)立桿見(jiàn)影的好處在于:它使許多系統(tǒng)級(jí)查詢(相對(duì)于編寫針對(duì)一組 XML 文檔的 XPath
查詢,或?qū)?shù)據(jù)集中到專用數(shù)據(jù)結(jié)構(gòu)以用于查詢)變得更簡(jiǎn)單更一般。雖然,“XML 查詢語(yǔ)言”(XQuery)和 XML
資源庫(kù)供應(yīng)商提供的專用文檔收集查詢工具的出現(xiàn)也幫助解決了這一需求,但是現(xiàn)在可以使用 RDF,至少這種基本模型是標(biāo)準(zhǔn)化的。
遺憾的是,RDF 模型的查詢還不是標(biāo)準(zhǔn)化的,這是 RDF 社區(qū)需要填補(bǔ)的非常重要的漏洞。幸運(yùn)的是,由于 RDF 模型的簡(jiǎn)單性,所以非常容易通過(guò)基本模式匹配來(lái)構(gòu)建幾乎所有形式的查詢。這是 4RDF 中所使用的基本方法,其中,查詢就是就是查找語(yǔ)句三元組的過(guò)程,該三元組匹配給定的主語(yǔ)、謂語(yǔ)和賓語(yǔ)模式。作為示例,請(qǐng)看表 1 中剛創(chuàng)建的部分統(tǒng)一模型。
表 1 .來(lái)自問(wèn)題跟蹤器數(shù)據(jù)的一些語(yǔ)句
有了這些三元組,就會(huì)非常容易地明白別人是如何會(huì)簡(jiǎn)單地詢問(wèn)如下問(wèn)題:“給用戶 uogbuji 分配的操作標(biāo)識(shí)是什么?”以及“每個(gè)操作的主體是什么?”。將第一個(gè)問(wèn)題轉(zhuǎn)換成查找匹配下列模式的三元組,這里的“*”是匹配任何值的通配符:
對(duì)此的響應(yīng)之一是帶有主語(yǔ)“#anonymous:a0d010d-f0c-706-20e-80a0407606”(表示匹配的操作標(biāo)識(shí))的語(yǔ)句。注意,該標(biāo)識(shí)是由 4RDF 為匿名資源(如果資源沒(méi)有標(biāo)識(shí),則由應(yīng)用程序顯式地分配一個(gè))生成的特殊標(biāo)識(shí)。構(gòu)成全球唯一標(biāo)識(shí)符(UUID)的一個(gè)十六進(jìn)制值緊跟在“anonymous”序列之后。有了這個(gè)標(biāo)識(shí),第二個(gè)示例問(wèn)題相當(dāng)于匹配下列模式,該模式返回帶有賓語(yǔ)“Organize a vote on this topic”的語(yǔ)句:
建立在這一簡(jiǎn)單的想法上,幾乎任何形式的 RDF 查詢(甚至關(guān)系型(SQL)查詢和對(duì)象(OQL)查詢的等價(jià)查詢)都是可能的。
編碼 RDF 查詢
清單 4 中的 Python 程序 query1.py 通過(guò)模式匹配、讀入 issues.rdf
文件以及打印 uogbuji 的所有任務(wù)的主體,使用 4RDF 來(lái)運(yùn)用這項(xiàng)查詢技術(shù)。(如果沒(méi)有使用 Python,當(dāng)然可以使用其它 RDF 查詢工具,譬如
RDFDb、Jena 或列在參考資料中“Dave Beckett 的 RDF 資源指南”中的工具。)
清單 4:演示一個(gè) RDF 模型簡(jiǎn)單查詢的 Python 程序。
from Ft.Rdf import Util
#Returns an RDF model object, and the database instance it uses for
#persistence (in our case, it's just a memory data structure)
model, db = Util.DeserializeFromUri('issues.rdf')
db.begin()
USER_ID_BASE = 'http://users.rdfinference.org/ril/issue-tracker#'
IT_SCHEMA_BASE = 'http://xmlns.rdfinference.org/ril/issue-tracker#'
print 'Actions assigned to uogbuji:'
#None is used as the wild-card
matching_statements = model.complete(None,
IT_SCHEMA_BASE+'assign-to',
USER_ID_BASE+'uogbuji'
)
for statement in matching_statements:
id = statement.subject
matching_statements = model.complete(id,
IT_SCHEMA_BASE+'body',
None
)
body = matching_statements[0].object
print "*", body
db.commit()
在清單 4 中,首先從 issues.rdf 文件中讀?。ń獬蛄谢㏑DF;然后執(zhí)行查詢以查找表示指派給 uogbuji 哪些操作的語(yǔ)句。然后使用每個(gè)語(yǔ)句的主語(yǔ)(操作標(biāo)識(shí))來(lái)查詢每個(gè)操作的主體。如果安裝了 Python 和 4Suite,運(yùn)行和下面相同的示例:
$ python query1.py
Actions assigned to uogbuji
* Organize a vote on this topic
* Correct all to use the "0/1" form in the next draft.
這是 RDF 模型查詢的最底級(jí)別,因此有一點(diǎn)麻煩。清單 5 中的 Python 程序 query2.py 通過(guò)直接查詢相關(guān)主語(yǔ)和賓語(yǔ)等而走了一些捷徑。其結(jié)果就是清單 4 中同一個(gè)功能的更簡(jiǎn)單的版本。
清單 5:簡(jiǎn)化查詢代碼
from Ft.Rdf import Util
#Returns an RDF model object, and the database instance it uses for
#persistence (in our case, it's just a memory data structure)
model, db = Util.DeserializeFromUri('issues.rdf')
db.begin()
USER_ID_BASE = 'http://users.rdfinference.org/ril/issue-tracker#'
IT_SCHEMA_BASE = 'http://xmlns.rdfinference.org/ril/issue-tracker#'
print 'Actions assigned to uogbuji:'
actions = Util.GetSubjects(model, IT_SCHEMA_BASE+'assign-to',
USER_ID_BASE+'uogbuji')
for action in actions:
body = Util.GetObject(model, action, IT_SCHEMA_BASE+'body')
print "*", body
db.commit()
清單 5 仍然包含兩種級(jí)別的查詢;使用結(jié)合多個(gè)查詢的單個(gè)請(qǐng)求將更方便和更有效。(通過(guò)使用“RDF 推論語(yǔ)言(RDF Inference Language (RIL))”,那也是可能的,“RDF 推論語(yǔ)言”將在本專欄的后續(xù)文章中討論。順便提一下,示例問(wèn)題跟蹤器數(shù)據(jù)中參考了 RIL 開(kāi)放規(guī)范草稿。)清單 6 演示了在使用或不使用 API 捷徑情況下,執(zhí)行基本查詢的結(jié)果。
清單 6:執(zhí)行同清單 5 相同任務(wù)的簡(jiǎn)化的查詢會(huì)話
$ python query2.py
Actions assigned to uogbuji
* Organize a vote on this topic
* Correct all to use the "0/1" form in the next draft.
RDF 查詢不必涉及元數(shù)據(jù)語(yǔ)句組件的精確匹配。大多數(shù)的查詢語(yǔ)言提供大量的靈活性。作為一個(gè)示例,清單 7(query3.py)中的 Python 程序使用基于正則表達(dá)式的查詢來(lái)查找所有指派給 uogbuji 的操作(該操作的主體包含字符串“vote”)。
同樣,通過(guò)使用 RIL,清單 7 中的代碼將是一個(gè)簡(jiǎn)單查詢而且更有效(將在下一篇專欄文章里講述)。清單 8 演示了查詢中正則表達(dá)式的使用。
清單 8:演示在查詢中使用正則表達(dá)式的會(huì)話
$ python query3.py
Actions assigned to uogbuji
* Organize a vote on this topic
下一次……
本專欄文章演示了如何從示例問(wèn)題跟蹤器應(yīng)用程序?qū)⒏鞑糠纸M成完整的
RDF 模型,并且舉例說(shuō)明了該模型的基本查詢。在下篇文章中將探討一種豐富特性,可以利用 RDF 的強(qiáng)大功能來(lái)低成本地利用該特性。
參考資料
通過(guò)單擊文章頂部或底部的討論來(lái)參與本文的討論論壇。
請(qǐng)下載作者上一篇專欄文章中樣本代碼(介紹了使用 XML 的 RDF 技術(shù))和本專欄中樣本代碼文件的壓縮文件,這些文件使得理解這些示例或修改它們以利于重用變得更加容易。
Uche Ogbuji 的 Introduction to RDF 提供了對(duì) RDF 的基本介紹,并包含指向其它有用資源的鏈接。
Dave Beckett 的 RDF 資源指南 是一個(gè)指向與 RDF 相關(guān)文章、 工具、規(guī)范、討論和事件等等的綜合性的鏈接集。
Dan Brickley 的 RDF 可視化器(是基于 Web 的,并且可以應(yīng)用到任何平臺(tái))象本專欄文章中的圖 1 一樣,以圖形形式表示 RDF 文件。
本文中提及過(guò)但沒(méi)有演示過(guò)的兩個(gè) RDF 查詢工具是與 RDF 數(shù)據(jù)庫(kù) RDFDb 相關(guān)聯(lián)的查詢語(yǔ)言(其提供了用 C 與 Perl 來(lái)訪問(wèn)數(shù)據(jù)庫(kù))和 Jena(用于操縱 RDF 模型的實(shí)驗(yàn)性 Java API)。
使用 4Suite 的 XSLT 處理器測(cè)試了本文中的示例。
XML:the next big thing,是由 Tom Halfhill 所寫的學(xué)術(shù)性 IBM 研究論文,它討論了使用 RDF 增強(qiáng)下一代搜索引擎的可能性。
請(qǐng)參閱本專欄以前的專題,題為:
-
- XML 和語(yǔ)義: 實(shí)際情況
- XML 和語(yǔ)義:
該領(lǐng)域中的新生事物以及舊的鄰近范疇的另一事物
- 踏著語(yǔ)義的節(jié)拍
- 知識(shí)管理的基本 XML 和 RDF 技術(shù), 第一部分
- XML 和語(yǔ)義: 實(shí)際情況
正如 Scientific
American article 中所描述的那樣,Semantic Web 正在逐漸成為人們所研究和感興趣的事物,并且現(xiàn)在是 W3C 官方活動(dòng)
關(guān)于作者
瀏覽:知識(shí)管理的基本XML和RDF技術(shù)(一)
知識(shí)管理的基本XML和RDF技術(shù)(三)
知識(shí)管理的基本XML和RDF技術(shù)(四)
知識(shí)管理的基本XML和RDF 技術(shù)(五)
知識(shí)管理的基本XML和RDF技術(shù)(六)
- 1關(guān)注武漢OA信息化障礙
- 2以武漢OA信息化提升品質(zhì)
- 3內(nèi)容管理產(chǎn)品繼續(xù)保持增長(zhǎng)勢(shì)頭
- 4構(gòu)建企業(yè)武漢OA信息化系統(tǒng)
- 5微軟的武漢OA信息化實(shí)踐:數(shù)字神經(jīng)系統(tǒng)DNS
- 6武漢OA信息化(KM)
- 7Adobe格式方案支持IBM DB2內(nèi)容管理器
- 8辨析武漢OA信息化與內(nèi)容管理
- 9內(nèi)容管理系列(十):展望CMS(AMT研究院 倪娜)
- 10企業(yè)OA辦公系統(tǒng)中各個(gè)業(yè)務(wù)單元的銷售貢獻(xiàn)
- 11企業(yè)應(yīng)采用哪種武漢OA信息化戰(zhàn)略?
- 12武漢OA信息化與知識(shí)價(jià)值鏈(BY AMT 夏敬華)
- 13內(nèi)容管理系列(四):CMS的生命周期和工具箱(AMT研究院 倪娜)
- 14收購(gòu)Aptrix有助于IBM的WEB內(nèi)容管理
- 15[理論] 武漢OA信息化能給企業(yè)帶來(lái)什么?
- 16協(xié)同OA避免合同倒簽引起的不必要的合同糾紛
- 17武漢OA信息化(美國(guó))雜志網(wǎng)站
- 18武漢OA信息化:挖掘企業(yè)的隱藏資源(姜鐵虎)
- 19初探武漢OA信息化
- 20武漢OA信息化與業(yè)務(wù)流程重組
- 21企業(yè)內(nèi)容管理方案需求強(qiáng)勁 市場(chǎng)增長(zhǎng)迅速
- 22武漢OA信息化軟件系統(tǒng)簡(jiǎn)介
- 23武漢OA信息化隨筆之一:武漢OA信息化“突圍”(by AMT 夏敬華)
- 24武漢OA信息化的演變和發(fā)展
- 25OA移動(dòng)辦公平臺(tái)首頁(yè)都會(huì)顯示什么內(nèi)容呢?
- 26武漢OA信息化導(dǎo)入實(shí)例—以經(jīng)濟(jì)部技術(shù)處ITIS為例
- 27武漢OA信息化創(chuàng)造競(jìng)爭(zhēng)優(yōu)勢(shì)
- 28內(nèi)容管理系列(九):CM的發(fā)展歷程及現(xiàn)狀
- 29KPMG的2000年武漢OA信息化研究報(bào)告(英文)
- 30方正攜博思鏖戰(zhàn)內(nèi)容管理平臺(tái)
成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓
版權(quán)所有:泛普軟件 渝ICP備14008431號(hào)-2 渝公網(wǎng)安備50011202501700號(hào) 咨詢電話:400-8352-114