我正在尝试此查询:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?label
WHERE
{
?AGE rdfs:label ?label.
}
我需要模型中AGE
的所有值,但此查询会为我提供具有相同属性标签的其他资源值。
例如,我已将资源gender
连接到属性rdfs:label
。因此,在我的结果中,我得到了年龄值和性别值。
有谁可以告诉我哪里错了?
答案 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学习资料,因此建议学习其中一些以学习一些基础知识。