Федеративный запрос SPARQL к подграфу конечной точки SPARQL

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

Я получил свои данные в Virtuoso v7, а конечная точка SPARQL — "http://localhost:8890/sparql", Я хотел бы сделать удаленный запрос к подграфу этой конечной точки, который является "http://localhost:8890/TC", и я попытался

SELECT  *
WHERE
   { SERVICE <http://localhost:8890/sparql>
       { SELECT  ?subject ?predicate ?object
         FROM <http://localhost:8890/TC>
         WHERE
           { ?subject  ?predicate  ?object }
       }
   } LIMIT 50

И я получил ошибку, что "FROM" используется неправильно, поэтому у меня есть два вопроса:

1) могу ли я выполнить удаленный запрос к подграфу конечной точки SPARQL?

2) могу ли я иметь конечную точку SPARQL для каждого графа в Virtuoso v7?

Спасибо большое за вашу помощь.


person Artemis1216    schedule 30.10.2017    source источник
comment
1.) Нет, нельзя — см. грамматику   -  person UninformedUser    schedule 30.10.2017
comment
Добавьте ?default-graph-uri=..., где ... — URI, закодированный в %, к вызову SERVICE. Попробуйте пользовательский интерфейс DBedpia, чтобы увидеть это в действии.   -  person AndyS    schedule 30.10.2017


Ответы (1)


Вы можете использовать график вместо от.

В вашем примере:

SELECT  *
WHERE
{ 
  SERVICE <http://localhost:8890/sparql>
  { 
    SELECT  ?subject ?predicate ?object
    WHERE
     { graph <http://localhost:8890/TC> { ?subject  ?predicate  ?object } }
  }
} LIMIT 50

Я протестировал этот синтаксис со следующим запросом в конечной точке Uniprot SPARQL (Virtuoso) при объединении с dbpedia (Virtuoso):

SELECT  *
WHERE
   { SERVICE <http://dbpedia.org/sparql>
       {select distinct ?activity where { graph <http://dbpedia.org> {?activity a <http://www.ontologydesignpatterns.org/ont/d0.owl#Activity>} } LIMIT 10
       }
   } LIMIT 50
person biogeek    schedule 06.02.2018