代码之家  ›  专栏  ›  技术社区  ›  mcfly soft

如何过滤SPARQL查询中的简单主题

  •  1
  • mcfly soft  · 技术社区  · 6 年前

    我想我对SPARQL的基本知识已经很熟悉了。有人能帮忙吗?

    我只是想过滤所有包含RDS数据库“山”的主题。

    Prefix lgdr:<http://linkedgeodata.org/triplify/> Prefix lgdo:<http://linkedgeodata.org/ontology/> 
    Select * where { 
    ?s ?p ?o . 
    filter (contains(?s, "Mountain"))
    } Limit 1000
    

    Virtuoso 22023 Error SL001: The SPARQL 1.1 function CONTAINS() needs a string value as first argument
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Cleb    6 年前

    您可以使用以下方法使其“工作”:

    Prefix lgdr:<http://linkedgeodata.org/triplify/> Prefix lgdo:<http://linkedgeodata.org/ontology/> 
    Select * where { 
    ?s ?p ?o . 
    filter (contains(str(?s), "Mountain"))
    } Limit 1000
    

    注意附加的 str

    然而,这会导致

    Virtuoso S1T00 Error SR171: Transaction timed out
    

    我不知道该怎么处理。

    但在工作原理上:当你使用

    Limit 1
    

    s   p   o
    http://linkedgeodata.org/ontology/MountainRescue    http://www.w3.org/1999/02/22-rdf-syntax-ns#type     http://www.w3.org/2002/07/owl#Class