使用 SPARQL 从一组项目中获取属性
Get properties from a group of items in with SPARQL
我需要使用 Wikidata 的 SPARQL 查询服务。
我需要检索的是作为 (P31) 疾病 (Q12136) 实例的项目所具有的所有属性的列表
我在理解如何嵌套两个查询时遇到一些问题
通过这个查询,我们得到了所有属于疾病实例的项目:
SELECT ?item WHERE {
?项目 wdt:P31 wd:Q12136 。
}
那么这是属性列表,但我不必在整个站点中搜索,而是在上一句中获得的子组中搜索
SELECT 不同的 ?属性 ?属性 标签
在哪里
{
?属性 一个 wikibase:Property 。
服务 wikibase:label { bd:serviceParam wikibase:language "en" }
}
按 ?属性 标签
排序
嵌套这两个查询的正确方法是什么?另外,你也可以检索属性的类型吗?
谢谢。
这两个查询的合并可能类似于:
SELECT DISTINCT ?property ?propertyLabel WHERE {
?item wdt:P31 wd:Q12136 .
?item ?property ?value .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
[try it]
注意 DISTINCT
关键字,用于 de-duplicate 属性。
但是要获得正确的 属性 标签(而不是像 http://www.wikidata.org/prop/P279
这样的 属性 URI),您需要使用 a slightly more complex query
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" }
}
[try it]
然后,要同时获取 属性 数据类型,您可以使用 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" }
}
[try it]
我需要使用 Wikidata 的 SPARQL 查询服务。
我需要检索的是作为 (P31) 疾病 (Q12136) 实例的项目所具有的所有属性的列表
我在理解如何嵌套两个查询时遇到一些问题
通过这个查询,我们得到了所有属于疾病实例的项目:
SELECT ?item WHERE { ?项目 wdt:P31 wd:Q12136 。 }
那么这是属性列表,但我不必在整个站点中搜索,而是在上一句中获得的子组中搜索
SELECT 不同的 ?属性 ?属性 标签 在哪里 { ?属性 一个 wikibase:Property 。 服务 wikibase:label { bd:serviceParam wikibase:language "en" } } 按 ?属性 标签
排序嵌套这两个查询的正确方法是什么?另外,你也可以检索属性的类型吗?
谢谢。
这两个查询的合并可能类似于:
SELECT DISTINCT ?property ?propertyLabel WHERE {
?item wdt:P31 wd:Q12136 .
?item ?property ?value .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
[try it]
注意 DISTINCT
关键字,用于 de-duplicate 属性。
但是要获得正确的 属性 标签(而不是像 http://www.wikidata.org/prop/P279
这样的 属性 URI),您需要使用 a slightly more complex query
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" }
}
[try it]
然后,要同时获取 属性 数据类型,您可以使用 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" }
}
[try it]