2015-11-15 7 views
1

Возьмите эти две названные графы:SPARQL алгебра: сложно ASK из названных графиков, если какие-либо троек не существует

# graph :yesterday 
:Foo 
    :likes :Bar ; 
    :likes :Qux . 

# graph :today 
:Foo 
    :likes :Bar ; 
    :likes :Baz . 

Теперь предположим, что вы хотите узнать, есть ли какой-либо из троек из графа :yesterday отсутствуют графа :today , Как бы вы это делали ASK?

ASK 
FROM NAMED :yesterday 
FROM NAMED :today 
{ 
    GRAPH :yesterday { 
     ?s ?p ?o . 
     ... 
    } 
} 

ответ

5

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

NOT EXISTS испытания на отсутствие рисунка (есть также EXISTS). Это фильтр, применяемый к каждому решению первого шаблона. Это похоже на вложенный ASK, где также переменные заменяются входящими в фильтр.

PREFIX : <http://example/> 
SELECT * { 
    GRAPH :yesterday { ?s ?p ?o } 
    FILTER NOT EXISTS { GRAPH :today { ?s ?p ?o } } 
} 

MINUS выполняет две модели (левая и правая стороны), а затем возвращает строки слева, где нет соответствия один где-нибудь справа. Это анти-соединение.

PREFIX : <http://example/> 
SELECT * { 
    GRAPH :yesterday { ?s ?p ?o } 
    MINUS { GRAPH :today { ?s ?p ?o } } 
} 

Для обоих я получаю:

------------------------ 
| s | p  | o | 
======================== 
| :Foo | :likes | :Qux | 
------------------------ 

Триг:

@prefix : <http://example/> . 

:yesterday { 
    :Foo 
    :likes :Bar ; 
    :likes :Qux . 
} 

:today { 
    :Foo 
    :likes :Bar ; 
    :likes :Baz . 
} 
+1

Чувство немного глупое прямо сейчас забывания право с именем графа, когда я потянув меня за волосы, пытаясь выяснить, почему мой фильтр не существует, блок не отфильтровывал ': Bar'. Спасибо, что нашли время, чтобы ответить в любом случае, я надеюсь, что другие найдут это полезным в будущем. –

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

  • Нет связанных вопросов^_^