• 沒有找到結果。

第四章 系統發展與評估

第二節 系統建構

完成 D2R 伺服器以及 Solr 伺服器的建置之後,鏈結資料服務的基本雛 型已經完成。本研究以上述服務為基礎,為館藏查詢系統實作鏈結資料的加 值服務。本研究使用的電腦伺服器主機為臺灣師範大學圖書資訊學研究所所 有,建立的系統與服務放置於 http://140.122.104.78/opac/j3.php。圖 4-2 為本 館藏查詢系統之元件圖。本系統可分為六個單元,逐一解說如下:

參數 值 說明

q 欄位名:查詢字串 必填,欲查詢的字串

wt json || xml || csv || php 等等 回傳結果的資料格式

indent true||false wt 設定為 json,php 需將

indent 設定為 true

fl 欄位名 1,欄位名 2,.... 想要回傳的欄位

start 數字 設定回傳結果資料起始筆數

rows 數字 設定回傳結果資料結束筆數

sort 欄位名 asc || desc 依照欄位做遞增或遞減排序

48

圖 4 - 2 系統元件圖

一、 自動建議(Autocomplete)

在使用者開始輸入字串後,透過 JavaScript 即時傳送當下使用者所輸入 的內容,並且將內容傳送至 Solr 伺服器中進行比對,將符合內容的前十筆紀 錄回傳於系統,整理成一份清單供使用者選擇,使用者選擇清單中的項目之 後,系統會自動填入使用者尚未輸入完畢的字串,讓使用者可以進行查詢。

二、 讀取 VIAF(VIAF Reader)

若使用者輸入作者欄位進行查詢,系統會將關鍵字送往 VIAF 所提供之 API 比對最接近的人名,參見表 4-6,此為向 VIAF 檢索海明威(Hemingway)

範例。

49

表 4 - 6 VIAF 查詢網址

http://www.viaf.org/viaf/AutoSuggest?query=Hemingway

若有符合項目,VIAF 將回傳相關人物之 VIAF 編號,本系統會讀取來 自 VIAF 的作者紀錄,將作者的出生日、國籍、性別以及著作呈現於系統中,

參見表 4-7 ,此為海明威於 VIAF 中的紀錄。

50

PREFIX foaf: <http://xmlns.com/foaf/0.1/>

PREFIX dbo: <http://dbpedia.org/ontology/>

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

PREFIX dbp: <http://dbpedia.org/property/>

SELECT distinct ?title WHERE {{

?s foaf:isPrimaryTopicOf <http://en.wikipedia.org/wiki/Ernest_Hemingway>.

?x dbo:author ?s.

?x rdfs:label ?title.

} union {

?s foaf:isPrimaryTopicOf <http://en.wikipedia.org/wiki/Ernest_Hemingway>.

<ns2:VIAFCluster xmlns="http://viaf.org/viaf/terms#" xmlns:foaf="http://xmlns.com/foaf/

0.1/" xmlns:owl="http://www.w3.org/2002/07/owl#"xmlns:rdf="http://www.w3.org/1999/

02/22-rdf-syntax-ns#" xmlns:void="http://rdfs.org/ns/void#" xmlns:ns2="http://viaf.org/viaf/terms#">

<ns2:viafID>97006051</ns2:viafID>

<ns2:Document about="http://viaf.org/viaf/97006051/">

<ns2:inDataset resource="http://viaf.org/viaf/data"/>

<ns2:primaryTopic resource="http://viaf.org/viaf/97006051"/>

</ns2:Document>

<ns2:nameType>Personal</ns2:nameType>

<ns2:sources>

51

?x dbp:author ?s.

?x rdfs:label ?title.

}

FILTER ( lang(?title) = 'en' ) }

三、 讀取書籍封面(Book Cover Reader)

本系統會盡其可能的將書籍的封面呈現給使用者。此部份有兩種方式進 行。其一,若書籍資訊本身附帶 ISBN,本系統會直接連接 LibraryThing 或 是 OpenLibrary 取回書籍封面。由於兩者會有書籍封面缺失的狀況發生,為 減少此情況發生,本系統使用兩個來源互相補足,當本系統偵測到其一網站 無法提供圖片,將會選擇另外一個來源,若兩者皆無法提供圖片,本系統亦 會補上替代圖片告知使用者圖片無法取得。 LibraryThing 與 OpenLibrary 皆 有提供 API 讓開發者輸入書籍之 ISBN 即可取得圖片,表 4-9 為該等網站所 提供之 API 網址,其中 LibraryThing 須額外帶入開發者金鑰,加入會員後 可免費取得該金鑰。

表 4 - 9 書籍封面來源網址

來源網站 API 網址

OpenLibrary http://covers.openlibrary.org/b/isbn/{isbn}-L.jpg LibraryThing

http://covers.librarything.com/devkey/{api-key}/large/isbn/{isbn}

其二,若只有書名資訊則是先透過 OCLC 所提供之 API 查詢該書籍之 ISBN,再使用該 ISBN 取得 LibraryThing 或是 OpenLibrary 的書籍封面。表 4-10 為在 OCLC 查詢老人與海(the old man and the sea)之範例。

52

表 4 - 10 ISBN 查詢網址

http://classify.oclc.org/classify2/Classify?title=the+old+man+and+the+sea&summary=true

四、 讀取 DBpedia(DBpedia Parser)

在詳細書目畫面中,除了原本儲存於本機端的資料之外,本系統也透過 SPARQL 查詢語言提供來自 DBpedia 的各類資訊,如書籍資訊、作者資訊。

表 4-11 為查詢老人與海的作者資訊之 SPARQL 語法。此外,SPARQL 還可 做延伸查詢,例如套書資訊與電影改編資訊等。套書資訊來自 DBpedia 中的

「dbp:followedBy」與「dbp:precededBy」欄位,分別代表著「下一部作品」

與「前一部作品」,表 4-12 為查詢哈利波特:鳳凰會的密令(Harry Potter and the Order of the Phoenix)上下部作品之 SPARQL 語法。改編資訊則來自 DBpedia 中的「dct:subject」欄位,該欄位會註記該部作品所屬的主題,若該 作品的所屬主題有「dbc:British_novels_adapted_into_films」,則表示該部作 品的主題為「英國小說改編為電影」,然而其他國家亦會有作品改編為電影,

因此可在 SPARQL 加入廣義詞的條件,使檢索主題不僅為「英國小說改編 為電影」,而是「書籍改編為電影」(dbc:Books_adapted_into_films),表 4-13 為查詢哈利波特:鳳凰會的密令電影改編資訊之 SPARQL 語法。

53

表 4 - 11 SPARQL 查詢語法

prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>

prefix dbp: <http://dbpedia.org/property/>

select ?u ?w where {

?t rdfs:label ?s.

?t dbp:author ?w.

?w rdfs:comment ?u.

?s bif:contains '\"The Old Man and The Sea\"'.

FILTER (lang (?u)='en').

}

表 4 - 12 SPARQL 查詢語法

select distinct ?a ?b where {

?t rdfs:label ?s.

OPTIONAL{?t dbp:precededBy ?a}

OPTIONAL{?t dbp:followedBy ?b}

?s bif:contains '\" Harry Potter and the Order of the Phoenix \"'.

}

表 4 - 13 SPARQL 查詢語法

prefix dbo: <http://dbpedia.org/ontology/>

prefix dbc: <http://dbpedia.org/resource/Category:>

prefix skos: <http://www.w3.org/2004/02/skos/core#>

prefix dct: <http://purl.org/dc/terms/>

select distinct ?t (COUNT(?t) AS ?count) where {

?t rdfs:label ?s.

?t dbo:abstract ?u.

?t dct:subject ?r.

optional{?t rdf:type dbo:WrittenWork}.

?r skos:broader{,3} dbc:Books_adapted_into_films.

54

?s bif:contains '\" Harry Potter and the Order of the Phoenix \"'.

Filter (lang(?u)='en').

}

五、 RDF Wrapper

除了維基百科,本系統也有抓取來自網路書店(如亞馬遜與博客來)的 商品資訊,透過網頁讀取技術,替書籍的相關資訊建立專屬頁面以及 URI。

若未來該網路書店發佈了鏈結資料集,本系統也只需替換相對應的超連結即 可繼續提供最新資訊。本研究所給予的 URI 原則如下:

http://140.122.104.78/opac/{provider}/{ISBN}

參數{provider}為資訊提供者,亞馬遜書店為 amazon,博客來書店為 bookstw;參數{ISBN}為該作品之 ISBN 編號。例如書籍「Harry Potter and the Order of the Phoenix」的 ISBN 編號為「0747561079」,則來自亞馬遜書店的 資訊將會給予 URI 為「http://140.122.104.78/opac/amazon/0747561079」。

六、 書目下載功能(Record Downloader)

本系統所提供的書目下載格式為 RDF 以及 JSON。前者為鏈結資料常 用格式,後者為網路程式開發所常用的格式。每一筆書目皆擁有靜態網址,

其命名原則如下:

http://140.122.104.78/opac/{資料格式}/{流水號}

55

參數{資料格式}可選擇書目紀錄的資料格式,RDF 與 JSON 為該參數之 選項;參數{流水號}則是該筆書目紀錄之流水編號。例如書籍「Harry Potter and the Prisoner of Azkaban 」 的 靜 態 網 址 為 「 http://140.122.104.78/opac/

bookid/14154672319296」,「http://140.122.104.78/opac/RDF/14154672319296」

為該筆書目之 RDF 下載連結。兩者皆有提供靜態網址,可作為未來程式開 發或資訊整合的媒介。

相關文件