2008 年 12 月 09 日
您一定聽說過 Wikipedia(維基百科全書),但是您是否知道還有一些與 Wikipedia 相關(guān)的站點(diǎn),它們可以提供同樣有價(jià)值的由用戶生成的內(nèi)容?大量隸屬于Wikipedia 的相關(guān)站點(diǎn)對 Web 開發(fā)人員非常有用。了解如何通過 Wikipedia以外的資源豐富您的信息空間,包括應(yīng)用這些站點(diǎn)的數(shù)據(jù)的小部件示例。
Wikipedia一直被認(rèn)為是最流行的和最知名的 Web 站點(diǎn)之一。從想要完成家庭作業(yè)的學(xué)生,到希望利用用戶生成內(nèi)容的 Web 開發(fā)人員等等,都可以通過Wikipedia 滿足需求。但是就提供有用信息而言,Wikipedia 僅僅是一個(gè)更龐大資源的一部分。WikimediaFoundation (維基媒體基金會(huì))組織不僅運(yùn)營Wikipedia,并且還運(yùn)行很多其他站點(diǎn)。它在主頁中這樣聲明:“想像這樣一個(gè)世界,它讓每個(gè)人都可以自由分享所有的知識(shí)。這就是我們的承諾。”這是一個(gè)偉大的宣言,它不是一個(gè)龐大的百科全書就可以實(shí)現(xiàn)的。您可能已經(jīng)了解到 Wikipedia擁有大量不同語言的版本。(令我感到吃驚和欣慰的是,我發(fā)現(xiàn)了大量有關(guān) Igbo 語的 Wikipedia文章,這是我的母語)。但是您是否知道多長時(shí)間才會(huì)出現(xiàn)使用其他語言表示的有用信息(未翻譯為英語)?您以前是否聽說過Wiktionary、Wikinews、Wikibooks、Wikisource、Wikiversity以及類似內(nèi)容?您是否知道可以通過利用這個(gè)龐大的信息源為您的 Web 項(xiàng)目獲得一些好處?我將在本文中向您展示更優(yōu)秀的Wikimedia,并給出一些代碼幫助您的站點(diǎn)的用戶 “自由地分享所有知識(shí)”。
下面將簡單介紹除知名的 Wikipedia 以外,Wikipedia 家族中涵蓋的其他一些站點(diǎn)。
Wiktionary是與 Wikipedia相對應(yīng)的字典站點(diǎn)。很多人對這個(gè)開放內(nèi)容的百科全書的實(shí)用性表示懷疑,并且不受關(guān)注的字典編纂工作似乎是一項(xiàng)更加艱難的任務(wù)。在 “有效”條目的數(shù)量方面,法語版本的站點(diǎn)規(guī)模最大,緊隨其后的是英語版本的站點(diǎn),后者擁有目前為止最全面的條目和編輯。排在第三位的土耳其語版本與前兩者差距比較大,但是有 9 個(gè)語言版本的站點(diǎn)至少具有 1000,000 個(gè)“有效條目”,大量其他語言版本也接近這個(gè)規(guī)模,這些站點(diǎn)聯(lián)合起來就形成了一個(gè)令人吃驚的規(guī)模。其中一些站點(diǎn)通過使用自動(dòng)程序從一些免費(fèi)的信息源導(dǎo)入條目來進(jìn)行擴(kuò)展。例如 French Wiktionary,它包括大量來自 Dictionnaire de l'Académie fran?aise這種舊式的、免費(fèi)的字典的條目。很多 Wiktionary條目包括到其他語言的翻譯,因此另一個(gè)特性就是大量導(dǎo)入其他語言版本中列出的翻譯。條目類型眾多,從無實(shí)際內(nèi)容的存根(尤其是那些沒有被分類為“有效”條目的內(nèi)容),到包含豐富內(nèi)容的條目,比如詞源、用例、發(fā)音(包含音標(biāo)字母和聲音文件)、交叉參考、不同語法形式、翻譯,甚至包含對重要文本(例如Project Gutenberg)的外形分析。
Wikinews是獲得有關(guān)新聞和時(shí)事文章的站點(diǎn),它的理念是具有某些知識(shí)或參與某些事件的人士可以幫助填充相關(guān)頁面的內(nèi)容。其原則是必須秉持中立的觀點(diǎn)撰寫文章。Wikinews 可以包含新聞報(bào)道、多媒體報(bào)道、采訪等內(nèi)容。隨后出現(xiàn)了 WikimediaRadio,并最終發(fā)展為一個(gè)固定的流式音頻廣播站點(diǎn),包括各種節(jié)目和新聞,并且這些內(nèi)容大部分來自 Wikinews 和其他 Wikimedia項(xiàng)目。通常,Wikinews 覆蓋范圍往往傾向于那些擁有大量貢獻(xiàn)者的地區(qū)和主題,這限制站點(diǎn)本身發(fā)展為綜合性站點(diǎn)。此外,Wikipedia的流行意味著它經(jīng)常及時(shí)地更新站點(diǎn)的文章,甚至按照匹配新聞報(bào)道的速度進(jìn)行更新,因?yàn)樗?jīng)常從 Wikinews 項(xiàng)目獲得內(nèi)容。
對百科全書文章進(jìn)行的最大擴(kuò)展就是將它的主題變成一本完整的書籍,而這正是 Wikibooks 的領(lǐng)域。它包含了Wikijunior,一個(gè)面向兒童和兒童教育的文本集合,它可能很快將成為獨(dú)立的完整項(xiàng)目。Wikiversity 曾經(jīng)也是 Wikibooks的一部分,它成為了一個(gè)完整的 Wikimedia 站點(diǎn)。Wikiversity鼓勵(lì)以小組或社區(qū)的方式進(jìn)行學(xué)習(xí),參與者編輯學(xué)習(xí)項(xiàng)目頁面并進(jìn)行有助于理解的實(shí)踐。它被編排成各種學(xué)科,主要側(cè)重于所有結(jié)合了教科書的支持資源。Wikibooks 托管教科書并且還支持協(xié)作式社區(qū)開發(fā),Wiki頁面將擴(kuò)充后的零碎內(nèi)容并入到完整的書籍中。書籍和學(xué)科涵蓋了各種內(nèi)容,包括學(xué)習(xí)語言、計(jì)算機(jī)科學(xué)、有機(jī)化學(xué)和法律等。從事生物科學(xué)的教育者還應(yīng)關(guān)注Wikispecies,這是一個(gè)有關(guān)生命形式的分類字典,類似于一個(gè)有關(guān)生物學(xué)的、具有適當(dāng)結(jié)構(gòu)的 Wikipedia。
Wikisource(也稱為 The Free Library)將所有這些二次信息處理為原始文檔,用于收集源文本、注釋、翻譯和輔助材料。文本可以是小說或非小說作品、歷史記載、公共文檔或任何重要的并且不受版權(quán)限制的內(nèi)容。
Wikiquote是一個(gè)開放的參考資料站點(diǎn),包括各種語言的引用自歷史和文化方面的語錄。對于 Wikiquote最近存在爭議,一些人考慮到內(nèi)容的合適性和版權(quán)侵犯,認(rèn)為應(yīng)該撤銷這個(gè)網(wǎng)站。有人認(rèn)為應(yīng)該將語錄添加到 Wikisource中。然而,還有很多人認(rèn)為如果 Wikisource 存在任何內(nèi)容問題,社區(qū)在采取關(guān)閉 wiki這種過激舉措之前,首先應(yīng)該嘗試解決這些問題。當(dāng)然,這種行為在短時(shí)間內(nèi)是不可能發(fā)生的。
WikimediaCommons 是 Wikimedia家族的姊妹站點(diǎn),托管圖像、視頻、音頻和其他任何免費(fèi)的媒體文件。它是一個(gè)非常大型的資源庫,包含數(shù)百萬個(gè)文件。它的目標(biāo)是成為這類媒體文件的文化資源庫,并試圖通過對重要的圖像進(jìn)行分類和認(rèn)定進(jìn)一步實(shí)現(xiàn)這個(gè)目標(biāo)。
Wikimedia 空間的行為的廣度和高度為相互交流和 Wikimedia 以外的有用應(yīng)用程序提供了眾多機(jī)遇。這就是 Web 2.0 的精髓。用戶可以獲取目前尚未集成的開放數(shù)據(jù)流,并超越原始發(fā)布者的最初意圖,將它們轉(zhuǎn)換為全新的應(yīng)用程序。
目前,有關(guān)如何跨各種 Wikimedia屬性進(jìn)行搜索并不明確。一些獨(dú)立的項(xiàng)目提供了一種聚合搜索,但是其實(shí)用性分為多個(gè)級別,因此,完全有理由實(shí)現(xiàn)自己的搜索。Google 的其中一個(gè)計(jì)劃Google Co-op提供了一個(gè)自定義搜索引擎(CSE)工具,它允許您根據(jù)自己的規(guī)范定義并創(chuàng)建搜索工具,甚至可以通過詳細(xì)的注釋維護(hù)。我創(chuàng)建了一個(gè)自定義搜索“Wikimedia plus”,包含了所有受支持的語言,以及其他一些有趣的相關(guān)站點(diǎn)。清單 1 顯示了搜索的主要條件。
*.wikipedia.org/* *.wiktionary.org/* *.wikibooks.org/* *.wikiversity.org/* *.wikinews.org/* *.wikimedia.org/* *.wikiquote.org/* *.wikisource.org/* *.wikia.com/* *.uncyclopedia.org/* |
注意通配符形式,這是 CSE 的特性之一。Google 為 CSE 提供了一個(gè)小部件表單。清單 2 展示了用例。
清單 2. “Wikimedia plus” 搜索引擎部件的用法示例
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" > <head> <title>Hello Wikimedia world</title> </head> <body> <p>Use the following gadget to search Wikimedia and selected Wikia sites.</p> <hr/> <!-- Remove line breaks in the following script element before using --> <script src="http://www.gmodules.com/ig/ifr?url= http://www.google.com/coop/api/016404950850373629424/cse/1bius8lhc7g/gadget &synd=open&w=320&h=75&title=Wikimedia+plus &border=%23ffffff%7C3px%2C1px+solid+%23999999&output=js"></script> </body> </html> |
為了進(jìn)行格式化,我將 Google 的長 URL 分解為多個(gè)行。在試用或修改該清單前,只需刪除
script
元素中的換行符。圖 1 展示了結(jié)果頁面的截圖。Google 的 JavaScript 使用包含搜索表單的 iframe 替換了該元素。當(dāng)輸入搜索時(shí),將在一個(gè)獨(dú)立的窗口打開結(jié)果頁面。
圖 1. 使用 Google Wikimedia plus 部件的示例頁面
在第二個(gè)示例中,我將展示如何使用 Wiktionary 中的 word-of-the-day提要?jiǎng)?chuàng)建自己的小部件。編輯每天都要使用一個(gè)有趣的詞作為當(dāng)天的特色內(nèi)容。這個(gè)小部件將選中的詞與該詞在 Wikimedia commons上的搜索結(jié)果(圖像、聲音文件、視頻等等)結(jié)合在一起。清單 3(wotd.js)展示了部件的 JavaScript 代碼。
清單 3(wotd.js)JavaScript word-of-the-day 小部件
/* Word of the day widget code. Requires jQuery: http://www.jquery.com (tested with version 1.2.6) */ var wotd = { //Some variavles global to the wotd namespace wotdfeedurl: "wotd_feed_proxy", commonssearch: "commons_search_proxy/", commonsbase: "http://commons.wikimedia.org", mediatargetid: "target", wotdtargetid: "wotd", word: "", worddesc: "", wiktionarylink: "", //Invoked once the main HTML DOM is ready loadPage: function() { wotd.medianode = $("#" + wotd.mediatargetid); wotd.wotdnode = $("#" + wotd.wotdtargetid); $.get(wotd.wotdfeedurl, wotd.processFeed); }, //Invoked with the result of the AJAX call to the Wiktionary feed processFeed: function(feed) { var item = $("item:first", feed); var title = item.find("title").text(); wotd.word = title.substring(title.indexOf(':')+2); wotd.wikionarylink = item.find("link").text(); //Update the target spot on the main page with the word of the day link wotd.wotdnode.append(wotd.word); wotd.wotdnode.attr("href", wotd.wikionarylink); $.get(wotd.commonssearch + wotd.word, wotd.processSearch); }, //Invoked with the result of the AJAX call to the Wikimedia commons search processSearch: function(result) { //Narrow in on the search results page narrowed = $(result).find(".mw-search-results"); //Fix up relative link and image URLs narrowed.find("a, link").attr("href", function (arr) { return wotd.commonsbase + $(this).attr("href"); }); narrowed.find("img").attr("src", function (arr) { return wotd.commonsbase + $(this).attr("src"); }); //Update the target spot on the main page with the search results narrowed.find("table td a").each(function (){ $('<div></div>').html($(this)).appendTo(wotd.medianode); }) }, } $(document).ready(function() { wotd.loadPage(); }); |
這段代碼進(jìn)行了良好的注釋。它對 Ajax 庫使用了 jQuery 庫,并處理結(jié)果頁面。像這類部件還必須有一個(gè)服務(wù)器端組件,因?yàn)榘踩韵拗茖⒆柚鼓谟蛑g發(fā)出 Ajax 請求。JavaScript 調(diào)用了一個(gè)相關(guān)的 URL
wotd_feed_proxy
,這實(shí)際上是遠(yuǎn)程 Wikimedia 站點(diǎn)頁面的代理。這是使用所選的服務(wù)器工具可以實(shí)現(xiàn)的一個(gè)常見模式。我使用清單 4(wotd_server.py)所示的 Python/CherryPy 服務(wù)器代碼。
清單 4(wotd_server.py)word-of-the-day 部件的 Python/CherryPy 服務(wù)器代碼
# encoding: utf-8 """ wotd_server.py Requires: CherryPy http://cherrypy.py""" import os import urllib2 import cherrypy #Wikimedia commons search doesn't like bots, so pretend to be a browser HEADERS = { 'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' } #Tell the server where to find local, static files such as index.html LOCAL_DIR = os.path.join(os.getcwd(), os.path.dirname(__file__)) #The URLs to be proxied WOTD_FEED_URL = "http://toolserver.org/~cmackenzie/wotd-rss.php" COMMONS_SEARCH_BASE = "http://commons.wikimedia.org/wiki/Special:Search?search=" #The server code class class Wotd: #Set up a local, static file server default = cherrypy.tools.staticdir.handler( section="/", dir=LOCAL_DIR) #Proxy the Wiktionary feed _cnnew1@cherrypy.expose def wotd_feed_proxy(self): cherrypy.response.headers['Content-Type'] = 'text/xml' return urllib2.urlopen(WOTD_FEED_URL).read() #Proxy Wikimedia commons search @cherrypy.expose def commons_search_proxy(self, word): url = COMMONS_SEARCH_BASE + word req = urllib2.Request(url, None, HEADERS) response = urllib2.urlopen(req) cherrypy.response.headers['Content-Type'] = 'text/html' return response.read() #Launch the server cherrypy.server.socket_port = 8888 cherrypy.server.socket_host = 'localhost' cherrypy.quickstart(Wotd()) |
同樣,這些代碼也進(jìn)行了良好的注釋。清單 5(index.html)是小部件的示例托管頁面。
清單 5(index.html)word-of-the-day 小部件的示例托管頁面
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" > <head> <title>Wikimedia word of the day</title> <script src="jquery-1.2.6.js" type="text/javascript"></script> <script src="json2.js" type="text/javascript"></script> <script src="wotd.js" type="text/javascript"></script> </head> <body> <p>Wiktionary word of the day: <a id="wotd"></a></p> <p>Related items on Wikimedia commons:</p> <div id="target"></div> </body> </html> |
圖 2. 使用 word-of-the-day 小部件的示例頁面
![]() ![]() |
![]()
|
如果您對這些站點(diǎn)中的技術(shù)和組織感興趣,可以訪問 Meta-Wiki,這是 “一個(gè)致力于協(xié)調(diào)和歸檔 Wikimedia Foundation的項(xiàng)目及其相關(guān)事務(wù)的網(wǎng)站”。Wikimedia Foundation 是一個(gè)非盈利性組織,但它的類似開放信息目標(biāo)啟發(fā)了商業(yè)公司(通常稱為商業(yè)Wiki farms)。規(guī)模最大的此類商業(yè)站點(diǎn)是 Wikia,它的一名創(chuàng)始人還是 Wikimedia共同創(chuàng)始人之一。該站點(diǎn)托管了大量可能不適合 Wikimedia 站點(diǎn)的主題(例如各種Uncyclopedia,它對實(shí)際的主題進(jìn)行了虛構(gòu)的描述)。Wikileaks是一個(gè)針對激進(jìn)主義者,舉報(bào)者和其他想要匿名發(fā)布政府、企業(yè)或其他組織希望保密的機(jī)密文檔的人員的 wiki。由于涉及敏感性話題,因此Wikileaks 不屬于傳統(tǒng)意義上的 wiki,在發(fā)布之前需要在內(nèi)部進(jìn)行審核。
由于在 Wikimedia 站點(diǎn)中使用了Creative Commons Attribution許可(知識(shí)共享許可),您可以免費(fèi)使用所有這些資料,甚至可以用于商業(yè)活動(dòng),惟一的要求是必須添加返回鏈接并清晰地說明來源歸屬。Wikimedia的目標(biāo)令人矚目,其實(shí)現(xiàn)過程也是如此。具有創(chuàng)造力的網(wǎng)絡(luò)管理員需要處理大量的信息。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
