Не понимает запросы SERQL - PullRequest
1 голос
/ 30 ноября 2010

Я настроил сервер Sesame (openrdf.org) и попытался получить к нему доступ через API Java.

Для тестирования я использовал очень простой пример из Википедии:

<?xml version="1.0" encoding="UTF-8" ?>
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:dc="http://purl.org/dc/elements/1.1/">
  <rdf:Description rdf:about="http://de.wikipedia.org/wiki/Resource_Description_Framework">
 <dc:title>Resource Description Framework</dc:title>
 <dc:publisher>Wikipedia - Die freie Enzyklopädie</dc:publisher>
</rdf:Description>
</rdf:RDF> 

и

<?xml version="1.0" encoding="UTF-8" ?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/">
  <rdf:Description rdf:about="http://de.wikipedia.org/wiki/Resource_Description_Framework">
    <dc:title>Resource Description Framework 2</dc:title>
    <dc:publisher>Wikipedia - Die freie Enzyklopädie</dc:publisher>
  </rdf:Description>
</rdf:RDF>

Запрос SPARQL в рабочей среде Sesame работает как положено:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?title
WHERE{
?res dc:publisher ?pub .
?res dc:title ?title

FILTER (
sameTerm(?pub, "Wikipedia - Die freie Enzyklopädie")
)
}

возвращает весь заголовок от издателя "Wikipedia - Die freie Enzyklopädie".

Теперь для Java API я пытаюсь перевести этот пример на SERQL.

Я пробовал следующий запрос:

SELECT title 
FROM {title} dc:publisher {"Wikipedia - Die freie Enzyklopädie"}
USING NAMESPACE
rdf = <http://www.w3.org/1999/02/22-rdf-syntax-ns#>,
dc = <http://purl.org/dc/elements/1.1/>

Но это возвращает все данные и не заголовок, а URL из rdf: about. Я также пробовал разные варианты, такие как «dc: title» вместо «title», но я не получил никакого результата.

Я уже искал в сети и прочитал много документации. Но почему-то я не совсем понимаю синтаксис SERQL.

У вас есть какой-то указатель для меня? Как я могу получить все названия от определенного издателя в результате?

Большое спасибо!

1 Ответ

0 голосов
/ 08 июля 2011

Прежде всего, есть полная инструкция по SeRQL , доступная в пользовательской документации Sesame , так что она должна помочь вам понять синтаксис SeRQL.

Что касается вашего конкретного запроса, проблема в том, что ваш запрос SeRQL запрашивает что-то отличное от запроса SPARQL, который вы давали ранее. Я не буду вдаваться в подробности, но SeRQL-эквивалент вашего SPARQL-запроса будет:

SELECT title 
FROM {res} dc:publisher {"Wikipedia - Die freie Enzyklopädie"}; 
           dc:title {title}
USING NAMESPACE
rdf = <http://www.w3.org/1999/02/22-rdf-syntax-ns#>,
dc = <http://purl.org/dc/elements/1.1/>

SeRQL представляет тройные шаблоны в форме {subject} predicate {object}.

...