我刚刚开始使用SPARQL,正在尝试创建一个查询,以检索所有信息,其中ID具有多个预定义值之一。我的查询代码类似于:
SELECT *
WHERE {
?id ?property ?value .
?value a ?type .
?type rdfs:label ?type_value .
FILTER ( ?id IN (<id1>,<idi>,<idn> ) )
}
我遇到的问题是在id列表变得越来越大时,查询速度会变得非常缓慢。我直觉上认为有更好的方法来编写这个查询语句,但我很难找出如何创建这种查询语句。我考虑采用类似以下方式的解决方案:
SELECT *
WHERE {
<id_value> ?property ?value .
?value a ?type .
?type rdfs:label ?type_value .
}
我希望查询可以检索多个id的所有值,而不是在最后过滤结果,但我不知道如何编写查询来返回一个id_value的所有值。当我添加另一行用于另一个id_value时,它会过滤掉我期望的其他值,所以我认为我写得不正确。请问该如何操作?