变量+标签在SPARQL中不起作用的原因

变量+标签在SPARQL中不起作用的原因,sparql,wikidata,Sparql,Wikidata,在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 我知道如果你把标签放在变量的名

在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
我知道如果你把标签放在变量的名字后面,它会显示标签。所以,我不明白为什么这显示没有输出:

    SELECT ?h ?hLabel ?date ...

提前谢谢你

我不知道变量名后面的标签的特定功能

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

如果您需要特定语言的标签,例如,对于英语,请添加筛选器语言?hLabel,EN


.

此功能由Wikidata specific提供。它解决了这个问题,但现在又出现了另一个问题。这是我的新查询:`SELECT?h?hLabel?date其中{?h wdt:P31 wd:Q5。?h wdt:P569?date。?h rdfs:label?hLabel.可选{?h wdt:P570?d}FILTER?date>1880-01-01T00:00:00Z^^xsd:dateTime FILTER!bound?d}LIMIT 1000`现在在答案中,我有一些元素不止一次了。我尝试了DISTINCT和'SERVICE wikibase:label{bd:serviceParam wikibase:language en}'。但两者都不起作用。谢谢,我想是因为语言。只需添加我在答案中提到的语言过滤器,只包含英语结果。或者在select中添加?lang,然后在where子句中添加BIND lang?hLabel as?lang。@JackGreen如果使用Wikidata标签服务,则不需要使用rdfs:label三重模式。谢谢。我发现您的意思是:SERVICE wikibase:label{bd:serviceParam wikibase:language en}。
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