这两个查询的合并可能类似于:
SELECT DISTINCT ?property ?propertyLabel WHERE {
?item wdt:P31 wd:Q12136 .
?item ?property ?value .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
[试试看]
请注意DISTINCT
用于删除重复属性的关键字。
但是要获得正确的属性标签(而不是像 一样的属性 URI http://www.wikidata.org/prop/P279
),您需要使用稍微复杂一点的查询
SELECT DISTINCT ?property ?propLabel WHERE {
?item wdt:P31 wd:Q12136 .
?item ?property ?value .
hint:Query hint:optimizer "None" .
?prop wikibase:directClaim ?property .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
[试试看]
然后,要获取属性数据类型,您可以使用wikibase:propertyType
:
SELECT DISTINCT ?property ?propLabel ?type WHERE {
?item wdt:P31 wd:Q12136 .
?item ?property ?value .
# get the property label
# see https://www.wikidata.org/wiki/Wikidata:SPARQL_query_service/queries#Adding_labels_for_properties
hint:Query hint:optimizer "None" .
?prop wikibase:directClaim ?property .
?prop wikibase:propertyType ?type .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
[试试看]