在SPARQL查询中解析来自AltLabel的返回

在SPARQL查询中解析来自AltLabel的返回,sparql,rdf,wikidata,skos,Sparql,Rdf,Wikidata,Skos,在下面这样的Wikidata SPARQL查询中,我希望能够为?placeOfBirthAltLabel的返回使用自定义分隔符 问题在于?placeOfBirthAltLabel下的某些值包含逗号 e、 g。 “纽约”的同义词包括“美国纽约”一词 但是,由于返回值是逗号分隔的,因此这个条目将被解析为两个单独的字符串 换句话说,我需要回归到[纽约,美国;纽约;纽约,美国],而不是[纽约,美国,纽约,纽约,美国] SELECT ?item ?itemLabel ?placeOfBirthLabel

在下面这样的Wikidata SPARQL查询中,我希望能够为
?placeOfBirthAltLabel
的返回使用自定义分隔符

问题在于
?placeOfBirthAltLabel
下的某些值包含逗号

e、 g。 “纽约”的同义词包括“美国纽约”一词

但是,由于返回值是逗号分隔的,因此这个条目将被解析为两个单独的字符串

换句话说,我需要回归到[纽约,美国;纽约;纽约,美国],而不是[纽约,美国,纽约,纽约,美国]

SELECT ?item ?itemLabel ?placeOfBirthLabel ?placeOfBirthAltLabel 
WHERE
{
  ?item wdt:P106 wd:Q10833314.
  OPTIONAL { ?item wdt:P19 ?placeOfBirth }

  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}

LIMIT 100

谢谢

您不需要解析替代标签。它们的值由标签服务连接。只是不要将标签服务用于替代标签:

选择?项目?项目标签?放置标签?放置标签,其中{
?项目wdt:P106 wd:Q10833314。
可选{
?项目wdt:P19?位置。
可选的{
?放置skos:altLabel?放置alt_标签。
过滤器(lang(?place\u alt\u label)='en')
}
}  
服务wikibase:标签{bd:serviceParam wikibase:语言“en”}
}

如果你还想解析。。。逗号是,请使用分组和带有自定义分隔符的
GROUP\u CONCAT

选择?项目?项目标签?位置标签
(GROUP_CONCAT(?place_alt_label;separator=';')AS?4)其中{
?项目wdt:P106 wd:Q10833314。
可选{
?项目wdt:P19?位置。
可选的{
?放置skos:altLabel?放置alt_标签。
过滤器(lang(?place\u alt\u label)='en')
}
}  
服务wikibase:标签{bd:serviceParam wikibase:语言“en”}
}
按?项目?项目标签?位置标签分组


小心标签服务投射的变量。比如说,

SELECT?item?itemlab?placeLabel{…}
按?项目?项目标签?位置标签分组
应该有效,而

选择?项目?项目标签(样本(?placeLabel)为?3{…}
按项目分组项目标签

不应该。

如果您明确查询
skos:altLabel
,您可以在使用
groupby?item?placeOfBirth
+
group_-concat
逗号时定义分隔符,正如AKSW所指出的,使用
group_-concat
。谢谢。您的意思是这样的查询:SELECT?item?itemLabel(GROUP_CONCAT(?placeOfBirthAltLabel;separator=“;”)AS?placeOfBirthAlt),其中{item wdt:P106 wd:Q10833314.可选{item wdt:P19?placeOfBirth.}服务wikibase:label{bd:serviceParam wikibase:language“en”.?item rdfs:label?itemLabel.?placeOfBirth skos:altLabel?placeOfBirthAltLabel.}}GROUP BY?item?itemLabel LIMIT 500不幸的是,无法解决如何使用GROUP_concat解析它。抱歉,这有点新…我总是很惊讶一些查询的速度有多慢,因为只有8778名网球选手…如果没有
可选的
s,没有标签服务,并且有一些查询提示,这应该会更快。。。