Я только начал использовать SPARQL и пытаюсь создать запрос, который извлекает всю информацию, где идентификатор имеет одно из нескольких предопределенных значений? У меня есть что-то вроде этого:
SELECT *
WHERE {
?id ?property ?value .
?value a ?type .
?type rdfs:label ?type_value .
FILTER ( ?id IN (<id1>,<idi>,<idn> ) )
}
Проблема, с которой я столкнулся, заключается в том, что запрос становится очень медленным, когда список идентификаторов становится все больше. Я интуитивно думаю, что есть лучший способ написать этот запрос, но мне трудно понять, как создать такой запрос. Я думаю примерно в таком духе:
SELECT *
WHERE {
<id_value> ?property ?value .
?value a ?type .
?type rdfs:label ?type_value .
}
где он извлекает все значения только для нескольких идентификаторов, исключая фильтрацию результатов в конце, но я не могу понять, как написать запрос, чтобы он возвращал все значения для id_value. когда я добавляю еще одну строку для другого значения id_value, она отфильтровывает другие значения, которые я ожидаю, поэтому я думаю, что пишу это неправильно. Как я могу это сделать?