【发布时间】:2013-12-25 22:50:36
【问题描述】:
我想过滤特定关键字的 SPARQL 查询,同时排除其他关键字。我认为这可以通过FILTER (regex(str(?var),"includedKeyword","i") && !regex(str(?var),"excludedKeyword","i")) 轻松完成。它可以在没有“!”的情况下工作条件,但不与。我也把 FILTER 语句分开了,但是没用。
我在http://europeana.ontotext.com/ 上使用了这个查询:
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX edm: <http://www.europeana.eu/schemas/edm/>
PREFIX ore: <http://www.openarchives.org/ore/terms/>
SELECT DISTINCT ?CHO
WHERE {
?proxy dc:subject ?subject .
FILTER ( regex(str(?subject),"gemälde","i") && !regex(str(?subject),"Fotografie","i") )
?proxy edm:type "IMAGE" .
?proxy ore:proxyFor ?CHO.
?agg edm:aggregatedCHO ?CHO; edm:country "germany".
}
但我总是在第一行得到标题为“Gemäldegalerie”的结果,它的 dc:subject 为“Fotografie”(我想排除的那个)。我认为问题在于来自 Europeana 数据库的一个对象可以具有多个 dc:subject 属性,因此它可能只查找其中一个属性而忽略其他属性。
有什么想法吗?将不胜感激!
【问题讨论】:
标签: regex filter sparql rdf europeana-api