我有这个查询来返回有效哲学家的时代:

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 示例值为:
  • 19
  • 现代时代
  • http://dbpedia.org/resource/Contemporary_philosophy

  • 我只想返回作为资源的时代。我试过了:
    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>
    }
    

    但这没有任何返回。如何过滤掉非资源时代?

    最佳答案

    而不是添加额外的三重模式,你实际上想要使用 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))
    }
    

    关于rdf - 如何过滤掉 DBpedia SPARQL 查询中的非资源值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17381341/

    10-13 00:24