美文网首页
RDF图及SPARQL初步感受

RDF图及SPARQL初步感受

作者: 大大菠菜 | 来源:发表于2017-09-18 20:09 被阅读611次

    前景提要

    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的查询所有朋友关系的数据,再套用一个前端的插件,即可实现班级的可视化人物网络;
    (待更新。。。)

    相关文章

      网友评论

          本文标题:RDF图及SPARQL初步感受

          本文链接:https://www.haomeiwen.com/subject/epvbsxtx.html