为什么变量+ Label在SPARQL中不起作用

时间:2017-06-13 10:16:23

标签: sparql wikidata

在维基数据SPARQL的例子中,我们有这个:

    SELECT ?h ?date 
WHERE 
{
    ?h wdt:P31 wd:Q5 .
    ?h wdt:P569 ?date .
    OPTIONAL {?h wdt:P570 ?d } 
    FILTER (?date > "1880-01-01T00:00:00Z"^^xsd:dateTime)
    FILTER (!bound(?d))
}
LIMIT 1000

据我所知,如果你把Label放在变量名后面,就会显示标签。所以,我不明白为什么这没有输出:

    SELECT ?h ?hLabel ?date ...

提前谢谢!

1 个答案:

答案 0 :(得分:3)

我不知道变量名后面的Label的特定功能。

但是,对于rdfs:label,您可以在查询中包含rdfs:label。添加以下行:?h rdfs:label ?hLabel.

SELECT ?h ?hLabel ?date WHERE 
{
    ?h wdt:P31 wd:Q5 .
    ?h wdt:P569 ?date .      
    ?h rdfs:label ?hLabel. 
    OPTIONAL {?h wdt:P570 ?d } 
    FILTER (?date > "1880-01-01T00:00:00Z"^^xsd:dateTime)
    FILTER (!bound(?d))
}
LIMIT 1000

如果您想要特定语言的标签,例如对于英语添加FILTER (langMatches( lang(?hLabel), "EN" ) )

Here is a stackoverflow intersting answer about labels