SPARQL:如何获取特定资源的值?

时间:2016-03-05 15:03:20

标签: sparql

我正在尝试此查询:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT  ?label
WHERE
{
   ?AGE rdfs:label ?label.
}

我需要模型中AGE的所有值,但此查询会为我提供具有相同属性标签的其他资源值。

例如,我已将资源gender连接到属性rdfs:label。因此,在我的结果中,我得到了年龄值和性别值。

有谁可以告诉我哪里错了?

1 个答案:

答案 0 :(得分:4)

看起来你可能正在为变量&#39;?AGE&#39;分配一些语义。 SPARQL是一种图形模式匹配语言和任何带有&#39;?&#39;因为第一个字符是一个变量 - 或者更好的是,在图形模式匹配中是未知的。即,以下是对您的等效查询:

SPARQL ?label
WHERE
{   ?s rdfs:label ?label .
}

这将找到所有具有rdfs:label属性的三元组并选择?label的值。

如果您要查询特定资源,请在主题中指定该资源,例如:

PREFIX ex: <http://example.org/ex>
SPARQL ?label
WHERE
{   ex:AGE rdfs:label ?label .
}

因此,了解未知(用&#39;?&#39;(或&#39; $&#39;))和已知(qname或完整URI)之间的区别对于理解SPARQL如何执行图形模式匹配。

Web上有很多SPARQL学习资料,因此建议学习其中一些以学习一些基础知识。