Как ссылаться на разные репозитории в запросе SPARQL (объединенный)?

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

Но для этого мне нужно будет сослаться на два репозитория в федеративном запросе.

Я использую Аллегрограф.

2 ответа

Пример использования FactForge (т. Е. С использованием федеративных запросов SPARQL 1.1, а не федеративных хранилищ Allegrograph):

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>

CONSTRUCT { ?s ?p ?o }
    {
    VALUES (?s) {(dbr:Yekaterinburg)}   
    ?s ?p ?o. 
    MINUS
        {
        SERVICE <http://dbpedia.org/sparql>
            {
            VALUES (?s) {(dbr:Yekaterinburg)}
            ?s ?p ?o
            } 
        }  
    } 

Очевидно, что таким способом нельзя вычесть DBpedia из DBpedia Live, хотя бы один набор результатов должен быть относительно небольшим. Кажется, что федеральные магазины Allegrograph не могли помочь в такой задаче вычитания. Вероятно, вы должны разделить свои тройки на именованные графики, а не на отдельные магазины.

С AllegroGraph это можно сделать двумя способами:

(1) AllegroGraph позволяет объединять несколько локальных и / или удаленных тройных хранилищ в одно виртуальное хранилище, которое затем может быть запрошено как одно тройное хранилище.

(2) Вы можете использовать федеративные запросы SPARQL 1.1, которые используют SERVICE ключевое слово. Вот пример из книги Learning SPARQL:

PREFIX gp: <http://wifo5-04.informatik.uni-mannheim.de/gutendata/resource/people/>

SELECT ?dbpProperty ?dbpValue ?gutenProperty ?gutenValue
WHERE
{
  SERVICE <http://DBpedia.org/sparql>
  {
    <http://dbpedia.org/resource/Joseph_Hocking> ?dbpProperty ?dbpValue .
  }
  SERVICE <http://wifo5-04.informatik.uni-mannheim.de/gutendata/sparql>
  {
    gp:Hocking_Joseph ?gutenProperty ?gutenValue .
  }
} 
Другие вопросы по тегам