Попробовав что-то вроде FILTER ( A || B )
метода, у меня сложилось впечатление, что он довольно медленный.
Я думаю, что вы можете сделать то же самое, в основном, но с использованием VALUES
и UNION
Я попробовал это на DBPedia ( ~ 2,46 миллиарда триплетов ) с фильмом, и, похоже, он показал себя хорошо.
CONSTRUCT {
?subject ?predicate ?object
}
WHERE {
{ ?subject ?predicate ?object .
VALUES ?subject { dbpedia:The_Matrix }
}
UNION
{ ?subject ?predicate ?object .
VALUES ?object { dbpedia:The_Matrix }
}
}
sparql результат на dbpedia
Редактировать: Ради дополнительной информации, я думаю, вы могли бы технически написать также:
CONSTRUCT { ?subject ?predicate ?object }
WHERE {
?subject ?predicate ?object .
OPTIONAL { dbpedia:The_Matrix ?predicate ?object . }
OPTIONAL { ?subject ?predicate dbpedia:The_Matrix . }
}
, но некоторые популярные базы данных RDF действительно не могут справитьсяOPTIONAL
очень качественно, но умрет.