Sparql 混淆可选-正在消失的记录

Sparql 混淆可选-正在消失的记录,sparql,dbpedia,optional,Sparql,Dbpedia,Optional,我在SPARQL语句中使用可选短语时遇到问题。当我像这样查询dbpedia时: CONSTRUCT { ?guitarist rdfs:label ?name . ?guitarist rdfs:comment ?desc . ?guitarist dbpprop:placeOfBirth ?placebirth } WHERE { ?guitarist dbpprop:wikiPageUsesTemplate <http://dbpedia.org/resource/Template

我在SPARQL语句中使用可选短语时遇到问题。当我像这样查询dbpedia时:

CONSTRUCT { ?guitarist rdfs:label ?name . ?guitarist rdfs:comment ?desc . ?guitarist dbpprop:placeOfBirth ?placebirth }
WHERE {
  ?guitarist dbpprop:wikiPageUsesTemplate <http://dbpedia.org/resource/Template:Infobox_musical_artist> . 
  ?guitarist rdfs:label ?name .
  ?guitarist rdfs:comment ?desc .
  ?guitarist dbpprop:placeOfBirth ?placebirth .
  FILTER ( lang(?name) = "en" && lang(?desc) = "en" )
} 
CONSTRUCT{吉他手rdfs:label?name。?吉他手rdfs:comment?desc。?吉他手dbpprop:placeOfBirth?placeBorth}
在哪里{
吉他手dbpprop:wikiPageUsesTemplate。
吉他手rdfs:标签?名称。
吉他手rdfs:评论?描述。
吉他手dbpprop:出生地点?出生地点。
过滤器(lang(?name)=“en”和&lang(?desc)=“en”)
} 
罗杰·沃特斯出生地和其他数据被返回。但当我转到这里时,所有罗杰·沃特斯的记录都不见了:

CONSTRUCT { ?guitarist rdfs:label ?name . ?guitarist rdfs:comment ?desc . ?guitarist dbpprop:placeOfBirth ?placebirth }
WHERE {
  ?guitarist dbpprop:wikiPageUsesTemplate <http://dbpedia.org/resource/Template:Infobox_musical_artist> . 
  ?guitarist rdfs:label ?name .
  ?guitarist rdfs:comment ?desc .
  OPTIONAL { ?guitarist dbpprop:placeOfBirth ?placebirth }
  FILTER ( lang(?name) = "en" && lang(?desc) = "en" )
}
CONSTRUCT{吉他手rdfs:label?name。?吉他手rdfs:comment?desc。?吉他手dbpprop:placeOfBirth?placeBorth}
在哪里{
吉他手dbpprop:wikiPageUsesTemplate。
吉他手rdfs:标签?名称。
吉他手rdfs:评论?描述。
可选{?吉他手dbpprop:placeOfBirth?PlaceBorth}
过滤器(lang(?name)=“en”和&lang(?desc)=“en”)
}

我做错了什么-我认为在应用可选的…

后,完整的记录不会丢失。DBpedia端点会为其认为过于昂贵的查询返回部分结果

对这两个查询执行
SELECT COUNT(*),其中…
,看起来第一个查询应该返回8k个结果,第二个查询应该返回60k个结果。您的
构造应为每个结果生成2-3个三元组,因此第一个查询应生成16-24k个三元组,第二个查询应生成120-180k个三元组。当我运行这些查询时,我从两个查询中得到了确切的10001个三元组。很明显,结果被截断了


尝试
LIMIT
OFFSET
(可能使用
ORDER BY
)。

好吧,我尝试通过添加?吉他手dbpprop:shortDescription“英国音乐家”来限制结果。常量到WHERE子句,但现在它返回一个空集(而根据应该返回)