前景提要
FOAF
FOAF艇肴,即Friend-of-a-Friend估灿,簡稱FOAF扫沼。FOAF 是一種 XML/RDF 詞匯表出爹,它以計算機可讀的形式描述您通常可能放在主 Web 頁面上的個人信息之類的信息缎除。
FOAF 詞匯表提供了一種管理社區(qū)內(nèi)信息的有用方法严就。關于其他人的信息常常是最令人感興趣的一類數(shù)據(jù),而且 FOAF 實現(xiàn)了分散器罐、機器可讀和個人描述等需求梢为。但在其自己的應用領域之外,F(xiàn)OAF 提供了用于研究有關構建語義 Web 的概念(鏈接、信任和起源的概念)的有用試驗臺。
RDF圖
RDF圖:RDF圖是由三元組(subject, predicate, object)組成的有向圖危队,subject通過predicate指向object,如圖1-1所示為一個RDF圖粟害。通常用三元組的數(shù)量表示RDF圖的大小。
SPARQL
SPARQL是一組W3C推薦標準樊零,提供了對Web上或RDF存儲(RDF Store)中的RDF圖內(nèi)容進行查詢和處理的語言和協(xié)議。代表 Web 未來的語義 Web 是一個以知識為中心的模型孽文,除了人類可讀的文檔和 XML 消息格式之外驻襟,它還增加了機器可以理解和處理的數(shù)據(jù)。SPARQL Protocol and RDF Query Language (SPARQL) 對于語義 Web 就像 SQL 對于關系數(shù)據(jù)庫一樣重要芋哭。它允許應用程序對分布式 RDF 數(shù)據(jù)庫進行復雜的查詢沉衣,并得到了互相競爭的多種框架的支持。本教程通過一家虛擬公司的團隊跟蹤和日志系統(tǒng)演示了它的用法减牺。
目錄
1.班級同學的foaf文件數(shù)據(jù)規(guī)范
2.fuseki 的使用
3.saprql 的語法
4.FOAF文件可視化人物網(wǎng)絡
正文
跟著老師在學信息情報相關的語義網(wǎng)的知識豌习。老師本著“talk is useless , show me the code”的教育培養(yǎng)方針,帶我們了解了語義網(wǎng)以及相關的rdf圖數(shù)據(jù)庫的存儲拔疚。
所以肥隆,現(xiàn)在的任務是將同學們的FOAF文件導入到RDF TripleStore里面去,再使用SPARQL語法對圖數(shù)據(jù)庫進行簡單的查詢稚失,并且補充相關數(shù)據(jù)栋艳,建立數(shù)據(jù)關聯(lián)。
1.班級同學的foaf文件數(shù)據(jù)規(guī)范
在此處列出一個模板的FOAF文件
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:admin="http://webns.net/mvcb/">
<foaf:PersonalProfileDocument rdf:about="">
<foaf:maker rdf:resource="#YangYongquan"/>
<foaf:primaryTopic rdf:resource="#YangYongquan"/>
<admin:generatorAgent rdf:resource="http://www.ldodds.com/foaf/foaf-a-matic"/>
<admin:errorReportsTo rdf:resource="mailto:leigh@ldodds.com"/>
</foaf:PersonalProfileDocument>
<foaf:Person rdf:ID="YangYongquan">
<foaf:name>涌全 楊</foaf:name>
<foaf:title>Mr</foaf:title>
<foaf:givenname>涌全</foaf:givenname>
<foaf:family_name>楊</foaf:family_name>
<foaf:nick>大大菠菜</foaf:nick>
<foaf:mbox_sha1sum>1d2de67cfbf6ad11c7e1271579c52bcec85fbb70</foaf:mbox_sha1sum>
<foaf:homepage rdf:resource="540232234@qzone.com"/>
<foaf:depiction rdf:resource="https://user.qzone.qq.com/540232234"/>
<foaf:phone rdf:resource="tel:13880808193"/>
<foaf:schoolHomepage rdf:resource="http://www.scu.edu.cn/"/>
<foaf:knows>
<foaf:Person>
<foaf:name>范瑋</foaf:name>
<foaf:mbox_sha1sum>f22657f594637e5958ab0c25cd78e5ff52a7218d</foaf:mbox_sha1sum>
<rdfs:seeAlso rdf:resource="http://fanw.info/FanWei.rdf"/>
</foaf:Person>
</foaf:knows>
<foaf:knows>
<foaf:Person>
<foaf:name>許琰</foaf:name>
<foaf:mbox_sha1sum>07612716117848bc9741029bd3488f9c1b86f733</foaf:mbox_sha1sum>
</foaf:Person>
</foaf:knows>
<foaf:knows>
<foaf:Person>
<foaf:name>李霜</foaf:name>
<foaf:mbox_sha1sum>5b46827f75c079c116f12b831d703b0830c47d0a</foaf:mbox_sha1sum>
</foaf:Person>
</foaf:knows>
</foaf:Person>
</rdf:RDF>
在班級同學的FOAF文件整理過程中句各,發(fā)現(xiàn)了有如下三個問題:
文件格式不正確吸占。
錯誤代碼為:Result: failed with message "Parse error: [line: 18, col: 12] Invalid byte 1 of 1-byte UTF-8 sequence."
解決方法:只需要把文件格式改為utf-8即可成功導入
<Tag>標簽的閉合不正確
錯誤代碼為:Result: failed with message "Parse error: [line: 27, col: 14] {E202} Expecting XML start or end element(s). String data "??" not allowed. Maybe there should be an rdf:parseType='Literal' for embedding mixed XML content in RDF. Maybe a striping error."
建議使用代碼格式化工具修改晴叨,也可以使用代碼編輯器手動修改
&字符無法在xml中正確解析
錯誤代碼為:Result: failed with message “Parse error: [line: 30, col: 92] The reference to entity ”ADSESSION“ must end with the ‘;’ delimiter.”
解決方法:把&修改為'&';
2.fuseki 的使用
fuseki簡介
Fuseki is a SPARQL server. It provides REST-style SPARQL HTTP Update, SPARQL Query, and SPARQL Update using the SPARQL protocol over HTTP.
fuseki下載
http://jena.apache.org/download/index.cgi
fuseki使用
在window平臺商下載安裝包之后運行里面的bat文件,隨后訪問localhost:3030即可
隨后在web端新建一個dataset矾屯,并且將dataset里面把之前的FOAF文件upload進去
我們可以看到兼蕊,我們的文件已經(jīng)上傳到fuseki的圖數(shù)據(jù)庫里面去了
3.saprql 的語法
關于SPARQL的語法網(wǎng)上都很多相關的文檔,在這列出:
https://www.w3.org/TR/2013/REC-sparql11-query-20130321/#WritingSimpleQueries
https://www.ibm.com/developerworks/cn/web/wa-data-integration-at-scale_sparql/index.html
關于我們自己上傳的同學FOAF文件件蚕,我使用SPARQL進行了簡單的查詢:
1.查詢所有同學的名字
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX admin: <http://webns.net/mvcb/>
SELECT ?family_name ?givenname
WHERE {
?Perssssson foaf:family_name ?family_name;
foaf:givenname ?givenname.
}
得到結果:
2.查詢楊涌全的所有節(jié)點信息
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX admin: <http://webns.net/mvcb/>
SELECT ?name ?p ?o
WHERE {
?a foaf:name ?name;
?p ?o.
values ?name {'涌全 楊'}.
}
得到結果:
3.查詢所有的朋友關系
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX admin: <http://webns.net/mvcb/>
SELECT ?name ?kname
WHERE {
?a foaf:name ?name.
?a foaf:knows ?x.
?x foaf:name ?kname.
}
得到結果:
4.FOAF文件可視化人物網(wǎng)絡
根據(jù)3.3的查詢所有朋友關系的數(shù)據(jù)孙技,再套用一個前端的插件,即可實現(xiàn)班級的可視化人物網(wǎng)絡骤坐;
(待更新绪杏。。纽绍。)