2013-03-25 2 views
2

Я пытаюсь построить онтологию в OWL для стран и городов (если такая реализация уже существует, пожалуйста, укажите это мне)городов запросы и их страна от DBpedia

Чтобы получить данные, я пытаясь использовать SPARQL со следующим кодом:

SELECT ?c WHERE { 
    ?c rdfs:label ?name . 
    ?c dbpedia-owl:country <http://dbpedia.org/resource/Country> . 
} 

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

любое предложение?

+0

Вы проверили [этот вопрос и его ответы] (http://stackoverflow.com/questions/9904938/dbpedia-sparql-query-to-get-certain- ценности-для-данного города)? – MarcoS

+0

Я изменил запрос с вашей ссылки и получил его. SELECT DISTINCT? City? Country WHERE { ? City rdf: type dbpedia-owl: city; rdfs: label? Label; DBpedia сова: страна страна }, но его до сих пор не работает – Noor

+0

Это один работает, но я получаю много несоответствующих результатов: SELECT * WHERE { х РДФ: Тип DBpedia сова: Страна } – Noor

ответ

7

SPARQL чувствителен к регистру (поскольку RDF чувствителен к регистру). DBpedia использует соглашение о том, что имена свойств начинаются с строчной буквы (например, dbpedia-owl:country для «страна, принадлежащая X, ...»), а имена классов начинаются с буквы верхнего регистра (например, dbpedia-owl:Country).

Если по работает, я имею в виду возвращает результаты, это работает (City вместо city):

SELECT DISTINCT ?city ?country 
WHERE { ?city rdf:type dbpedia-owl:City ; 
       rdfs:label ?label ; 
       dbpedia-owl:country ?country 
} 

Имейте в виду, однако, что не все места, которые вы и я бы назвал городов определенные как dbpedia-owl:City - они могут быть класса dbpedia-owl:Settlement или других классов. Таким образом, указанный выше запрос может не дать всем городам, которые вы хотите.

Также: для построения онтологии вам не нужны «данные». Онтология определяет, например, что все города являются населенными местами и что все населенные места являются местами. Чтобы иметь возможность сказать это, вам не нужно знать, что Эдинбург находится в Соединенном Королевстве.

+0

спасибо за ответ, по сути, за эту онтологию, мне только нужно, чтобы удержание было для выполнения расширения запроса, поэтому, если я могу знать, все места, которые это другое место, это может помочь мне, будь то поселение или город, его на самом деле не проблема, что для меня очень важно, как A содержать B и C. C содержит D ...... Возможно ли получить эту информацию из dbpedia ?? – Noor

+0

Итак, вы строите * базу знаний *. Я не уверен, что понимаю, что вы просите здесь; данный запрос показывает, что вы можете найти страну, в которой находится город: «Соединенное Королевство» содержит «Эдинбург», ... –

+0

Как вы думаете, если мы расширим запрос, предположим, что вместо этого только город, выполните объединение (город, сова: поселение, место, ..), было бы не лучше? – Noor

0

Используйте следующий код на https://dbpedia.org/sparql

SELECT DISTINCT ?city ?country 
WHERE { ?city rdf:type dbo:City ; 
     rdfs:label ?label ; 
     dbo:country ?country 
    }