How to filter non-resource values ​​in a SPARQL DBpedia query?

I have this query to return era for philosophers who work:

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> PREFIX dbpprop: <http://dbpedia.org/property/> SELECT ?philosopher ?era WHERE { ?philosopher a dbpedia-owl:Philosopher ; dbpprop:era ?era . } 

The following are ?era values:

I would like to return only eras that are resources. I tried:

 PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> PREFIX dbpprop: <http://dbpedia.org/property/> SELECT ?philosopher ?era WHERE { ?philosopher a dbpedia-owl:Philosopher ; dbpprop:era ?era . ?era a <http://dbpedia.org/resource> } 

but it returns nothing. How can I filter out non-resource era?

+4
source share
1 answer

Instead of adding an additional triple pattern, you really want to use FILTER with the ISURI function, for example,

 PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> PREFIX dbpprop: <http://dbpedia.org/property/> SELECT ?philosopher ?era WHERE { ?philosopher a dbpedia-owl:Philosopher ; dbpprop:era ?era . FILTER(ISURI(?era)) } 
+4
source

Source: https://habr.com/ru/post/1488869/


All Articles