RDF圖及SPARQL初步感受

前景提要

FOAF

FOAF,即Friend-of-a-Friend,簡稱FOAF。FOAF 是一種 XML/RDF 詞匯表,它以計算機可讀的形式描述您通常可能放在主 Web 頁面上的個人信息之類的信息。
FOAF 詞匯表提供了一種管理社區內信息的有用方法。關于其他人的信息常常是最令人感興趣的一類數據,而且 FOAF 實現了分散、機器可讀和個人描述等需求。但在其自己的應用領域之外,FOAF 提供了用于研究有關構建語義 Web 的概念(鏈接、信任和起源的概念)的有用試驗臺。

RDF圖

RDF圖:RDF圖是由三元組(subject, predicate, object)組成的有向圖,subject通過predicate指向object,如圖1-1所示為一個RDF圖。通常用三元組的數量表示RDF圖的大小。

SPARQL

SPARQL是一組W3C推薦標準,提供了對Web上或RDF存儲(RDF Store)中的RDF圖內容進行查詢和處理的語言和協議。代表 Web 未來的語義 Web 是一個以知識為中心的模型,除了人類可讀的文檔和 XML 消息格式之外,它還增加了機器可以理解和處理的數據。SPARQL Protocol and RDF Query Language (SPARQL) 對于語義 Web 就像 SQL 對于關系數據庫一樣重要。它允許應用程序對分布式 RDF 數據庫進行復雜的查詢,并得到了互相競爭的多種框架的支持。本教程通過一家虛擬公司的團隊跟蹤和日志系統演示了它的用法。


目錄

1.班級同學的foaf文件數據規范
2.fuseki 的使用
3.saprql 的語法
4.FOAF文件可視化人物網絡


正文

跟著老師在學信息情報相關的語義網的知識。老師本著“talk is useless , show me the code”的教育培養方針,帶我們了解了語義網以及相關的rdf圖數據庫的存儲。
所以,現在的任務是將同學們的FOAF文件導入到RDF TripleStore里面去,再使用SPARQL語法對圖數據庫進行簡單的查詢,并且補充相關數據,建立數據關聯。

1.班級同學的foaf文件數據規范

在此處列出一個模板的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文件整理過程中,發現了有如下三個問題:

文件格式不正確。

錯誤代碼為: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.”
解決方法:把&修改為'&amp';

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進去

我們可以看到,我們的文件已經上傳到fuseki的圖數據庫里面去了

3.saprql 的語法

關于SPARQL的語法網上都很多相關的文檔,在這列出:
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.查詢楊涌全的所有節點信息
    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文件可視化人物網絡

根據3.3的查詢所有朋友關系的數據,再套用一個前端的插件,即可實現班級的可視化人物網絡;
(待更新。。。)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,702評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,615評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,606評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,044評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,826評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,227評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,307評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,447評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,992評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,807評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,001評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,550評論 5 361
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,243評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,667評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,930評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,709評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,996評論 2 374

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,785評論 18 139
  • title: Jena學習筆記(一) RDFdate: 2016/11/26 22:56:02tags: Jena...
    Skye_kh閱讀 22,962評論 4 11
  • 這一部分就不準備用英語了,因為在這段時間的學習和查找過程中,發現關于RDF(Resource Descriptio...
    何大炮閱讀 1,422評論 2 1
  • 這是為一位不要回報的支持者寫的,也是為自己,為所有夢想家寫的。 在這里工作幾個月,終于從朝九晚六的生活中逃離了,卻...
    目分目分目分閱讀 753評論 0 1
  • 正在看拿破侖,他說:他的幸福是找到施展才能的地方。很有感觸,同時也結合自身工作進行了內省,覺得我是幸福的,我在這里...
    翠云碧水閱讀 304評論 0 1