2015-12-09 5 views
0

Я пытаюсь понять пустые узлы в черепахе правильно, и мне нужно знать, правильно ли я понял их.SPARQL файл черепах запроса с пустыми узлами в графе

Предположим, что у нас была черепаха файл:

@prefix sn: <....some uri...> . 
_:a sn:name "person1"; 
sn:email "[email protected]" . 
_:b sn:name "person2"; 
sn:email "[email protected]" . 
_:c sn:name "person3" . 

и мы имеем SPARQL запрос:

PREFIX sn: <...some uri...> 
SELECT ?email WHERE { 
?x sn:name "person1" . 
?x sn:email ?email . 
} 

Это только вернуть письмо от человека 1, потому что ?x связывается с этикеткой пустой узел _:a ... Поэтому мой вопрос заключается в том, что неопределенная переменная ?x все еще может связываться с пустым узлом, у которого есть метка, точно так же, как если бы она не была пустой ... Итак, в этом примере return будет:

 email 
-------------------------- 
<mailto:[email protected]> | 

Будет ли это правильно? Благодарю.

+1

Я попробую ответить на это через несколько минут, но мне было интересно, почему вы просто не попробуете его посмотреть, что такое ответ. Чак ваш RDF в triplestore и выполнить запрос, посмотрите, что вы получите обратно. –

+0

Кроме того, насколько я могу судить, ваш первый и второй примеры идентичны. Честно говоря, на самом деле не совсем понятно, что вы просите. –

ответ

1

Вы угадали правильно: в обоих случаях (и, как сказал я не вижу разницы между вашими двумя примерами) ответ Виль только электронной почты лица 1.

пустой узел с точки зрения SPARQL, является ресурсом, подобным любому другому, и он будет точно связывать переменные с пустым узлом. Таким образом, в приведенном выше примере, поскольку мы знаем, что два оператора используют тот же пустой узел, что и их субъект (поскольку они используют одну и ту же метку), они будут рассматриваться SPARQL как относящиеся к одному и тому же вопросу.

Одно из предостережений: используемый вами механизм SPARQL/трипстер, скорее всего, не сохранит конкретный пустой идентификатор пула a: при добавлении данных в трипестор он будет заменен некоторым сгенерированным внутренним идентификатором. Тем не менее, triplestore, конечно же, будет уверен, что оба вхождения a в ваш файл заменяются тем же самым сгенерированным идентификатором.

+1

Спасибо большое :) правые, два набора данных «идентичны», но я только предоставил конкретный результат во втором примере ... После этого я прошел через узел настройки локального сервера jena fuseki, чтобы проверить их, и получил ожидаемый результат ... Извините, если мой вопрос был немного неясным ... Мне было интересно, может ли пустой узел привязываться к переменной (в sparql), как и любой другой «незаполненный» узел, который вы прекрасно ответили в этом ответе. – Daniel

Смежные вопросы