DBpedia, получить страну сайта по широте и долготе

Я хочу получить страну, которая содержит широту и долготу. В настоящее время у меня есть запрос ниже, который работает,

SELECT DISTINCT ?lat,?long,?place WHERE {
:Taj_Mahal dbpprop:latitude ?lat .
:Taj_Mahal dbpprop:longitude ?long .
}

Теперь, как я могу получить страну, которая содержит эту широту и долготу, с помощью dbpedia?


person Noor    schedule 28.03.2013    source источник
comment
Вы не должны использовать запятые между переменными в предложении SELECT, как описано в stackoverflow.com/questions/15680198/error-in-sparql-query.   -  person Ben Companjen    schedule 29.03.2013


Ответы (1)


если у вас уже есть ресурс (Taj_Mahal), вы можете использовать этот запрос:

SELECT DISTINCT ?lat ?long (str(?place) as ?place) ?country1 ?country2 
  WHERE {
  :Taj_Mahal dbpprop:latitude ?lat .
  :Taj_Mahal dbpprop:longitude ?long .
  :Taj_Mahal dbpedia2:location ?place .
  OPTIONAL {:Taj_Mahal dbpedia2:country ?country1} .
  OPTIONAL {:Taj_Mahal dbpedia2:locmapin ?country2} .
}

выполнить запрос

если у вас есть только lat и log, вы можете использовать этот запрос:

SELECT DISTINCT str(?what) as ?what str(?place) as ?place ?country1 ?country2   
  WHERE {
  ?target dbpprop:latitude 27 .
  ?target dbpprop:longitude 78 .
  ?target dbpedia2:location ?place .
  ?target rdfs:label ?what .
  OPTIONAL {?target dbpedia2:country ?country1} .
  OPTIONAL {?target dbpedia2:locmapin ?country2} .

  FILTER (lang(?what) = 'en')
}

выполнить запрос

однако обратите внимание, что этот запрос работает, если для ресурса (в данном случае Тадж-Махал) установлены свойства country, location или logmapin. это не для всех мест.

person kr1    schedule 29.03.2013
comment
У меня путаница, для многих мест свойство широты и долготы находится из разных пространств имен, например. для этого ресурса dbpedia.org/page/Kaaba, у него нет dbpprop: latitude, но geo : lat, как с этим бороться. Выполняет ли решение объединение свойств, чтобы выбрать доступное? - person Noor; 29.03.2013
comment
У этого ресурса есть свойства dbpprop:latitude и dbpprop:longitude (хотя значения не так точны, как в geo:lat и geo:lon). Вы можете попробовать { ?target geo:lat <x> ; geo:lon <y> } UNION { ?target dbpprop:latitude <x> ; dbpprop:longitude <y>}. - person Ben Companjen; 29.03.2013
comment
Мне просто любопытно, почему это одно и то же свойство используется из разных пространств имен ?? - person Noor; 30.03.2013
comment
dbpprop:... автоматически создается для каждого поля в информационных ящиках, но geo:lat и geo:lon используются почти везде в мире связанных данных. Поэтому для совместимости имеет смысл добавить эти свойства для значений широты и долготы. - person Ben Companjen; 30.03.2013