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阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,494评论 18 139
  • title: Jena学习笔记(一) RDFdate: 2016/11/26 22:56:02tags: Jena...
    Skye_kh阅读 22,665评论 4 11
  • 这一部分就不准备用英语了,因为在这段时间的学习和查找过程中,发现关于RDF(Resource Descriptio...
    何大炮阅读 1,397评论 2 1
  • 这是为一位不要回报的支持者写的,也是为自己,为所有梦想家写的。 在这里工作几个月,终于从朝九晚六的生活中逃离了,却...
    目分目分目分阅读 726评论 0 1
  • 正在看拿破仑,他说:他的幸福是找到施展才能的地方。很有感触,同时也结合自身工作进行了内省,觉得我是幸福的,我在这里...
    翠云碧水阅读 292评论 0 1