- Удалить две строки с надписью
UNION
.Объединение предназначено для возврата строк, которые соответствуют одному шаблону или другому шаблону.Вы хотите строку, которая соответствует одному шаблону и другому шаблону.Это то, что SPARQL делает по умолчанию.Держите фигурные скобки {...}
вокруг каждой группы. - Удалите
FILTER
.Если вы используете переменные правильно, вам не понадобится фильтр. - Убедитесь, что у каждой из трех
{...}
групп есть свои собственные переменные.Они не должны иметь общих переменных.Если вы разделяете переменные между группами, то они должны иметь одинаковое значение, иначе строка будет удалена. - Кстати,
?subject
, ?object
и ?p
довольно ужасные имена переменных.Назовите свои переменные в честь того, что будет с ними связано.Итак, ?age
или ?voterBias
делают для лучших имен. - Создайте новую переменную, которая является общей для трех групп, возможно, назовите ее
?key
или ?ageRange
какпредложено в комментариях.Эта переменная должна содержать значение, которое вы хотите использовать для объединения групп, например, 18-29
.Таким образом, он должен получить точно такое же значение в каждой из трех групп.Похоже, что это значение не существует непосредственно в ваших данных, поэтому его нужно вычислить с помощью выражения, а затем связать с переменной в каждой группе, используя BIND(... AS ?key)
.
.Вы, вероятно, хотите работать с каждой из трех групп по отдельности и помещать их в запрос только после того, как каждая группа сработает.Как правило, результат для каждой группы должен иметь ?key
со значениями, которые согласуются между группами, а в противном случае в результате есть только переменные, которые не используются совместно с другой группой.