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

Why variable + Label is not working in SPARQL

在维基数据的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 ...

提前致谢!

我不知道变量名后面的 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" ) )

.