首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SPARQL DESCRIBE查询

SPARQL DESCRIBE查询
EN

Stack Overflow用户
提问于 2013-03-04 06:15:22
回答 3查看 12.3K关注 0票数 14

似乎我不理解SPARQL DESCRIBE查询。我需要检索匹配条件的资源的完整图表。在我尝试过的一个SPARQL端点上(挪威的Rødata N­,http://data.bibsys.no/data/query_authority.html),它工作得很好:

代码语言:javascript
复制
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>

DESCRIBE ?person WHERE {
  ?person rdf:type foaf:Person .
  FILTER EXISTS { ?person owl:sameAs ?sameAs }
}
LIMIT 100

我得到了一个具有owl:sameAs三元组的人员资源的结果。

在其他SPARQL端点上,Onki Light (http://sparql.onki.fi/sparql.tpl)和DBPedia (http://dbpedia.org/sparql)执行了类似的查询

代码语言:javascript
复制
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>

DESCRIBE ?x WHERE {
  ?x rdf:type skos:Concept .
  FILTER EXISTS { ?x skos:prefLabel ?prefLabel }
}
LIMIT 100

返回大量既没有rdf:Type = skos:Concept也没有skos:prefLabel的资源,所以我显然没有正确地执行查询。应该如何声明这种查询才能产生我需要的结果?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-04 16:48:54

没有skos:prefLabelskos:Concept的“接收到的资源”可能与满足您需求的资源相关。

SPARQL DESCRIBE查询实际上并不返回与查询的图模式匹配的资源,而是返回一个“描述”这些资源的RDF图。由sparql服务选择包含哪些三元组来描述资源。(见下文标准)

W3C Proposed Recommendation on SPARQL 1.1说:

RDF表单返回包含有关资源的

数据的单个结果RDF图。... 描述由查询服务确定。

所以,你意外收到的资源可能是描述你真正想要的资源的。要调查你的问题:检查你实际应该收到的三元组,找出与你想要的资源的关系。一个不错的方法是从LIMIT 1开始查看DESCRIBE查询的效果。

也许SELECT查询就是您所需要的?它只返回与图形模式匹配的资源。

票数 11
EN

Stack Overflow用户

发布于 2016-04-25 22:11:59

正如@Thomas所说的那样,标准对DESCRIBE的规定有点不足,因此您将得到不一致的结果。但是,使用CONSTRUCT,您可以返回许多引擎将为DESCRIBE返回的内容,即SPO和运维,并且跨服务一致地执行此操作。下面是一个执行此操作的查询:

代码语言:javascript
复制
CONSTRUCT {
   ?person ?p ?o .
   ?s ?p1 ?person .
}
WHERE {
   ?person rdf:type foaf:Person .
   FILTER EXISTS { ?person owl:sameAs ?sameAs } .
   ?person ?p ?o .
   ?s ?p1 ?person .
}

这将得到一个RDF图,它“描述”绑定到?person的资源,即?person的所有属性以及值(对象)为?person的所有属性。

票数 2
EN

Stack Overflow用户

发布于 2015-01-08 18:18:35

在当前的情况下,

SELECT或CONSTRUCT不是可行的选择,因为我不知道数据的实际结构

为什么这样说我?我认为你要么只想得到资源:

代码语言:javascript
复制
select ?x WHERE {
  ?x rdf:type skos:Concept .
  FILTER EXISTS { ?x skos:prefLabel ?prefLabel }
}
LIMIT 100

或其所有传出的三元组:

代码语言:javascript
复制
select ?x ?p ?y WHERE {
  ?x rdf:type skos:Concept.
  FILTER EXISTS { ?x skos:prefLabel ?prefLabel }
  ?x ?p ?y
}
LIMIT 100
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15191557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档