2016-11-28 2 views
0

У меня есть Graph группу <group> из м графики <group_1> ... <group_m> с п общих троек. Когда я делаю счетчик вместе с графом <graph> с к общих троек вне группы графа, я получаю только число троек п в графе группы:Использование SPARQL «от» и с графом и графом группы в Виртуоз 7.20.3217

select count(*) 
from <group> 
from <graph> 
{?s ?p ?o} 

Результат: п

Когда я перечисляю графы в группе графа явно, однако, я получаю правильный результат:

select count(*) 
from <group_1> 
from <group_2> 
... 
from <group_m> 
from <graph> 
{?s ?p ?o} 

Результат: п + к

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

ответ

1

Вы должны использовать либо два подзапроса, как это, например:

select ?n ?k (?n + ?k as ?totalCount) where { 
    { select (count(*) as ?n) where { 
     graph group: { ?s ?p ?o } } 
    { select (count(*) as ?k) where { 
     graph graph: { ?s ?p ?o } } 
} 

Или использовать союз:

select (count(?s1) as ?n) 
     (count(?s2) as ?k) 
     (?n + ?k as ?totalCount) 
where { 
    { graph group: { ?s1 ?p1 ?o1 } } 
    union 
    { graph graph: { ?s2 ?p2 ?o2 } } 
} 
+0

Есть синтаксические ошибки, когда я исполняю свой первый запрос и возвращает 0 троек для когда я их исправляю (круглые скобки в сумме, удаляя «:», добавляя отсутствующие фигурные скобки). –

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