rdf – 在SPARQL中使用’GRAPH’关键字来获取远程图

我正在寻找使用SPARQL进行相对基本的任务:给定一个FOAF图,我想解析我在那里找到的元素,获取它们的标签(如果它们存在)然后,将它们用作新的图形,从中找到有关这些人的信息.

例如,您可以想象一个简单的用例,我想运行SPARQL查询列出我最喜欢的食物(根据我的FOAF文件),以及所有朋友最喜欢的食物.

这就是目前的情况.请注意,出于测试目的,目前我正在尝试使用下面的查询,通过?name3变量获取朋友的名字.运行此查询不会返回?graph和?name3的任何结果,即使我知道rdfs:seeAlso链接到一些有效的RDF文件,其中至少有两个应该具有name属性.感谢您提供的任何输入!

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?name1 ?name2 ?graph ?name3
FROM <my-rdf-file>
WHERE { 
    ?person1 foaf:kNows ?person2 .
    ?person1 foaf:name ?name1 .
    ?person2 foaf:name  ?name2 .
    OPTIONAL { 
        ?person2 rdfs:seeAlso ?graph .
        GRAPH ?graph {
            ?person3 foaf:name ?name3 .         
        }   
    }       
}

解决方法

GRAPH不会隐式地将远程数据提取到商店中,这会带来太大的安全风险.可能有一些系统可以启用它,但它是非标准的.

但是,在SPARQL 1.1 Update中,有一个关键字LOAD,尽管如此,您可以编写:

LOAD <uri>

这将把图表提取到商店,所以你可以写:

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT disTINCT ?graph
FROM <my-rdf-file>
WHERE { 
    ?person1 foaf:kNows ?person2 .
    ?person1 foaf:name ?name1 .
    ?person2 foaf:name  ?name2 .
    OPTIONAL { 
        ?person2 rdfs:seeAlso ?graph .   
    }       
}

将?graph的绑定提供给一组LOAD语句,然后运行原始查询.

注:在一些系统中,例如4store你需要启用LOAD,认情况下不允许这样做,所以请查看你正在使用的商店的文档.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Mip是什么意思以及作用有哪些
怎么测试Mip页面运行情况
MIP安装的具体步骤有哪些
HTML添加超链接、锚点的方法及作用详解(附视频)
MIP的规则有哪些
Mip轮播图组件中的重要属性讲解
Mip的内联框架组件是什么
怎么创建初始的MIP配置及模板文件
HTML实现多选框及无法提交多数据的原因分析(附视频)
HTML如何设置复选框、单选框以及默认选项?(图文+视频)
怎么使用MIP组件
Div垂直居中效果怎么实现
HTML如何实现视频在线播放
如何使用Mip代码校验工具
Mip中弹出层组件是什么
如何用HTML实现简单按钮样式
Mip中快速回顶组件怎么用
Div内容居中效果如何实现
Div水平居中效果怎么实现
Mip中列表组件怎么用