目前尚不清楚您为什么要这样做,但可以通过更复杂的查询来完成,UNION
即
- 其他8本书的数据
- 两本书的数据
SELECT DISTINCT ?book ?date
WHERE
{ { SELECT DISTINCT ?book ?date
WHERE
{ ?book rdf:type dbo:Book ;
foaf:name ?name ;
dbp:releaseDate ?date
FILTER ( ?book NOT IN (dbr:Panther_in_the_Basement, dbr:Endless_Night) )
}
LIMIT 8
}
UNION
{ VALUES ?book { dbr:Panther_in_the_Basement dbr:Endless_Night }
?book rdf:type dbo:Book ;
foaf:name ?name ;
dbp:releaseDate ?date
}
}
请注意,由于 DBpedia 数据集不是那么干净,并且对于releaseDate
此查询有一些具有多个值的书籍可能会返回重复的书籍。要克服这个问题,您必须使用GROUP BY
+ SAMPLE
(或GROUP_CONCAT
)
实际上,我认为这个查询的更紧凑版本也应该可以工作,但它不会在DBpedia上返回任何结果:
SELECT DISTINCT ?book ?date
WHERE
{ ?book foaf:name ?name ;
dbp:releaseDate ?date
{ { SELECT ?book
WHERE
{ ?book rdf:type dbo:Book }
LIMIT 8
}
}
UNION
{ VALUES ?book { dbr:Panther_in_the_Basement dbr:Endless_Night } }
}