SPARQL, RDF и обработка данных - PullRequest
4 голосов
/ 22 августа 2011

Я новичок во всей этой семантике, и меня погрузили в проект, который требует, чтобы я использовал конечную точку SPARQL из dbpedia для получения информации о некоторых вещах, таких как, например, Город. Идея состоит в том, что мое приложение собирает некоторые из этих ключевых слов (, которые предопределены, такие как Город, Страна и Регион ) и полагаются на dbpedia, чтобы получить некоторую разумную информацию об этом.

Поработав с конечной точкой SPARQL в течение некоторого времени, я пришел к следующему запросу:

PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX prop: <http://dbpedia.org/property/>

SELECT ?city
WHERE {
?city prop:name "X"@en; 
a dbo:PopulatedPlace
}

Где X обозначает название города, о котором я пытаюсь получить информацию. Когда я выполняю этот запрос к конечной точке SPARQL, я получаю URI в структуре RDF, который указывает на хранилище RDF в DBPedia ( по крайней мере, так я его интерпретирую, пожалуйста, исправьте меня, если я не прав )

Возвращенный результат для города "Антверпен" выглядит так:

<rdf:RDF><rdf:Description rdf:nodeID="rset"><rdf:type rdf:resource="http://www.w3.org/2005/sparql-results#ResultSet"/><res:resultVariable>city</res:resultVariable><res:solution rdf:nodeID="r0"><res:binding rdf:nodeID="r0c0"><res:variable>city</res:variable><res:value rdf:resource="http://dbpedia.org/resource/Antwerp"/></res:binding></res:solution></rdf:Description></rdf:RDF>

Я использую Ruby on Rails с RDF для Ruby gem для работы с данными RDF. Но, честно говоря, я не знаю, как на самом деле работать с этой информацией. Когда я перехожу по ссылке, мне кажется, что я получаю магазин RDF, который содержит всю информацию о городе, который я запрашивал.

Прав ли я в том, что мне, вероятно, нужно указать мой код на полученный URI и проанализировать нашу информацию, которую я хочу? Или, например, должна быть возможность выбрать некоторую информацию непосредственно через конечную точку SPARQL? Например, описание и демографические данные?

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

Ответы [ 2 ]

6 голосов
/ 22 августа 2011

Вероятно, проще начать, получая всю необходимую информацию непосредственно из конечной точки SPARQL.Вы можете использовать запрос, подобный следующему:

SELECT ?city ?property ?value
WHERE {
    ?city prop:name "X"@en; 
          a dbo:PopulatedPlace;
          ?property ?value .
}

Это вернет набор свойств и значений, которые описывают город в некоторых деталях, и даст вам представление о том, какую информацию вы можете получить.

Следующим шагом будет специальный запрос интересующих вас свойств:

SELECT *
WHERE {
    ?city prop:name "Galway"@en; 
          a dbo:PopulatedPlace .
    OPTIONAL { ?city dbo:populationUrban ?pop }
    OPTIONAL { ?city foaf:homepage ?homepage }
    OPTIONAL { ?city geo:lat ?lat }
    OPTIONAL { ?city geo:long ?long }
}

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

0 голосов
/ 29 марта 2017

да, вы можете использовать полученный URI и проанализировать информацию, или вы можете использовать «bind» в вашем SPARQL только для получения информации. Например, в следующем коде SPARQL:

PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX prop: <http://dbpedia.org/property/>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos/>

SELECT ?city, ?latitude, ?longitude
WHERE {
?city prop:name "Edinburgh"@en; 
    a dbo:PopulatedPlace;
    geo:lat ?lat;
    geo:long ?long.
    bind(strafter(str(?lat), "http://www.w3.org/2003/01/geo/wgs84_pos/") as ?latitude)
    bind(strafter(str(?lat), "http://www.w3.org/2003/01/geo/wgs84_pos/") as ?longitude)
}

вместо "http://www.w3.org/2003/01/geo/wgs84_pos/55.93" для широты" вы получите только "55,93".

Конечно, если вам не нужно использовать конечную точку SPARQL, Jena (для java) и rdflib (для python) являются очень хорошим выбором для обработки запросов SPARQL и редактирования онтологии.

...