Доступ к свойствам элемента, содержащегося в значении родительского элемента - PullRequest
0 голосов
/ 08 октября 2019

Можно ли получить доступ к значениям элемента, который существует в свойстве другого элемента. Например, в случае Маттерхорн . Существует свойство «значимое событие» P793. Значением этого свойства является элемент «первое восхождение» Q1194369, которое имеет свойства «момент времени» P585 и «участник» P710.

Significant event property

Я хотел бы иметь возможность вернуть эти значения для горы, но я не знаю, как получить доступ к значениям с помощью SPARQL. Я попытался определить «первое восхождение» в качестве параметра, но он не дает никаких результатов. Я также попытался изучить все доступные свойства «первого всплытия», но не вижу, где хранятся эти значения. Код, который я попробовал:

 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". }
}

1 Ответ

0 голосов
/ 10 октября 2019

Спецификаторы операторов не тривиальны в первый раз ...

Решение:

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

...