2013-06-29 81 views
4

我有這樣的查詢返回的時代爲工作哲學家:如何在DBpedia SPARQL查詢中過濾掉非資源值?

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示例值包括:

我只想回到那些時代資源。我試過了:

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> 
} 

但是這不會返回任何結果。我如何過濾非資源時代?

回答

4

而不是增加額外的三重模式實際上要使用FILTERISURI功能例如,

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)) 
} 
+1

完美的答案。這裏是isURI和相關功能文檔的鏈接。在這種情況下,似乎所有值都是URI或文字。 http://www.w3.org/TR/sparql11-query/#func-isIRI –