访问包含在父项值中的项的属性
Accessing the properties of an item contained in the value of a parent item
是否可以访问另一个项目的 属性 中存在的项目的值。例如在 Matterhorn 的情况下。有一个属性'significant event'P793。 属性 的值是项目 'first ascent' Q1194369,它具有属性 'point in time' P585 和 'participant' P710。
我希望能够 return 山的这些值,但我不知道如何使用 SPARQL 访问这些值。我尝试将 'first ascent' 定义为参数,但没有产生任何结果。我还尝试检查 'first ascent' 的所有可用属性,但我看不到这些值的存储位置。我试过的代码是:
SELECT ?mountainLabel ?date ?climbers
WHERE
{
?mountain wdt:P31 wd:Q8502. # instance of mountain
?mountain wdt:P17 wd:Q39. # country Switzerland
?mountain wdt:P935 "Matterhorn". # name
?mountain wdt:P793/wd:Q1194369* ?firstAss. # first ascent
?firstAss wdt:P585 ?date . #date of ascent
?firstAss wdt:P710 ?climbers . #climbername
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en, de". }
}
语句限定符在第一次时并不简单...
解决方案:
PREFIX bd: <http://www.bigdata.com/rdf#>
PREFIX p: <http://www.wikidata.org/prop/>
PREFIX pq: <http://www.wikidata.org/prop/qualifier/>
PREFIX ps: <http://www.wikidata.org/prop/statement/>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wikibase: <http://wikiba.se/ontology#>
SELECT ?mountainLabel ?firstAssLabel ?date ?climberLabel
WHERE
{
?mountain wdt:P31 wd:Q8502. # instance of mountain
?mountain wdt:P17 wd:Q39. # country Switzerland
?mountain wdt:P935 "Matterhorn". # name
?mountain wdt:P793/wd:Q1194369* ?firstAss. # first ascent
?mountain p:P793 ?firstAssStat .
?firstAssStat ps:P793 ?firstAss .
?firstAssStat pq:P585 ?date . #date of ascent
?firstAssStat pq:P710 ?climber . #climbername
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en,de" .
}
}
演示:http://linkedwiki.com/query/Climbers_of_first_ascents
文档:https://www.wikidata.org/wiki/Wikidata:SPARQL_tutorial#Qualifiers
就我个人而言,我会观察项目的 RDF/Turtle 来构建我的查询:
https://www.wikidata.org/wiki/Special:EntityData/Q1374.ttl
是否可以访问另一个项目的 属性 中存在的项目的值。例如在 Matterhorn 的情况下。有一个属性'significant event'P793。 属性 的值是项目 'first ascent' Q1194369,它具有属性 'point in time' P585 和 'participant' P710。
我希望能够 return 山的这些值,但我不知道如何使用 SPARQL 访问这些值。我尝试将 'first ascent' 定义为参数,但没有产生任何结果。我还尝试检查 'first ascent' 的所有可用属性,但我看不到这些值的存储位置。我试过的代码是:
SELECT ?mountainLabel ?date ?climbers
WHERE
{
?mountain wdt:P31 wd:Q8502. # instance of mountain
?mountain wdt:P17 wd:Q39. # country Switzerland
?mountain wdt:P935 "Matterhorn". # name
?mountain wdt:P793/wd:Q1194369* ?firstAss. # first ascent
?firstAss wdt:P585 ?date . #date of ascent
?firstAss wdt:P710 ?climbers . #climbername
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en, de". }
}
语句限定符在第一次时并不简单...
解决方案:
PREFIX bd: <http://www.bigdata.com/rdf#>
PREFIX p: <http://www.wikidata.org/prop/>
PREFIX pq: <http://www.wikidata.org/prop/qualifier/>
PREFIX ps: <http://www.wikidata.org/prop/statement/>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wikibase: <http://wikiba.se/ontology#>
SELECT ?mountainLabel ?firstAssLabel ?date ?climberLabel
WHERE
{
?mountain wdt:P31 wd:Q8502. # instance of mountain
?mountain wdt:P17 wd:Q39. # country Switzerland
?mountain wdt:P935 "Matterhorn". # name
?mountain wdt:P793/wd:Q1194369* ?firstAss. # first ascent
?mountain p:P793 ?firstAssStat .
?firstAssStat ps:P793 ?firstAss .
?firstAssStat pq:P585 ?date . #date of ascent
?firstAssStat pq:P710 ?climber . #climbername
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en,de" .
}
}
演示:http://linkedwiki.com/query/Climbers_of_first_ascents
文档:https://www.wikidata.org/wiki/Wikidata:SPARQL_tutorial#Qualifiers
就我个人而言,我会观察项目的 RDF/Turtle 来构建我的查询: https://www.wikidata.org/wiki/Special:EntityData/Q1374.ttl