SPARQL: combine and exclude regex filters

Viewed 3094

I want to filter my SPARQL query for specific keywords while at the same time excluding other keywords. I thought this may be easily accomplished with FILTER (regex(str(?var),"includedKeyword","i") && !regex(str(?var),"excludedKeyword","i")). It works without the "!" condition, but not with. I also separated the FILTER statements, but no use.

I used this query on 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".
        }

But I always get the result on the first row with the title "Gemäldegalerie", which has a dc:subject of "Fotografie" (the one I want excluded). I think the problem lies in the fact that one object from the Europeana database can have more than one dc:subject property, so maybe it looks only for one of these properties while ignoring the other ones.

Any ideas? Would be very thankful!

1 Answers
Related