在 SPARQL 查询中从 AltLabel 解析 returns
Parsing returns from AltLabel in a SPARQL query
在如下维基数据 SPARQL 查询中,我希望能够为 ?placeOfBirthAltLabel
.
的 return 使用自定义分隔符
问题是 ?placeOfBirthAltLabel
下的某些值包含逗号
例如
"New York" 的同义词包括 "New York, USA" 作为单个条目。
但是,由于 return 是以逗号分隔的,因此该单个条目将被解析为两个单独的字符串。
换句话说,我需要 return 为 [美国纽约;纽约市; NYC, USA ] 而不是 [New York, USA, NYC, NYC, USA]
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
谢谢!
您不需要解析替代标签。它们的值由标签服务连接起来。只是不要将标签服务用于替代标签:
SELECT ?item ?itemLabel ?placeLabel ?place_alt_label WHERE {
?item wdt:P106 wd:Q10833314.
OPTIONAL {
?item wdt:P19 ?place .
OPTIONAL {
?place skos:altLabel ?place_alt_label .
FILTER (lang(?place_alt_label)='en')
}
}
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
如果您仍想解析...逗号是 hardcoded,请改用分组和 GROUP_CONCAT
以及自定义分隔符:
SELECT ?item ?itemLabel ?placeLabel
(GROUP_CONCAT(?place_alt_label; separator='; ') AS ?4) WHERE {
?item wdt:P106 wd:Q10833314.
OPTIONAL {
?item wdt:P19 ?place .
OPTIONAL {
?place skos:altLabel ?place_alt_label .
FILTER (lang(?place_alt_label)='en')
}
}
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
GROUP BY ?item ?itemLabel ?placeLabel
注意标签服务投射的变量。例如,
SELECT ?item ?itemLabel ?placeLabel {...}
GROUP BY ?item ?itemLabel ?placeLabel
应该可以,而
SELECT ?item ?itemLabel (SAMPLE(?placeLabel) AS ?3) {...}
GROUP BY ?item ?itemLabel
不应该。
在如下维基数据 SPARQL 查询中,我希望能够为 ?placeOfBirthAltLabel
.
问题是 ?placeOfBirthAltLabel
下的某些值包含逗号
例如 "New York" 的同义词包括 "New York, USA" 作为单个条目。
但是,由于 return 是以逗号分隔的,因此该单个条目将被解析为两个单独的字符串。
换句话说,我需要 return 为 [美国纽约;纽约市; NYC, USA ] 而不是 [New York, USA, NYC, NYC, USA]
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
谢谢!
您不需要解析替代标签。它们的值由标签服务连接起来。只是不要将标签服务用于替代标签:
SELECT ?item ?itemLabel ?placeLabel ?place_alt_label WHERE {
?item wdt:P106 wd:Q10833314.
OPTIONAL {
?item wdt:P19 ?place .
OPTIONAL {
?place skos:altLabel ?place_alt_label .
FILTER (lang(?place_alt_label)='en')
}
}
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
如果您仍想解析...逗号是 hardcoded,请改用分组和 GROUP_CONCAT
以及自定义分隔符:
SELECT ?item ?itemLabel ?placeLabel
(GROUP_CONCAT(?place_alt_label; separator='; ') AS ?4) WHERE {
?item wdt:P106 wd:Q10833314.
OPTIONAL {
?item wdt:P19 ?place .
OPTIONAL {
?place skos:altLabel ?place_alt_label .
FILTER (lang(?place_alt_label)='en')
}
}
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
GROUP BY ?item ?itemLabel ?placeLabel
注意标签服务投射的变量。例如,
SELECT ?item ?itemLabel ?placeLabel {...}
GROUP BY ?item ?itemLabel ?placeLabel
应该可以,而
SELECT ?item ?itemLabel (SAMPLE(?placeLabel) AS ?3) {...}
GROUP BY ?item ?itemLabel
不应该。