【问题标题】:SPARQL search querySPARQL 搜索查询
【发布时间】:2016-10-02 23:09:35
【问题描述】:

我有一些结构如下的 RDF 数据:

[ pref:ip_address  "127.0.0.1" ;
  pref:time        "1459630844.482" ;
  pref:url         "https://google.com" ;
  pref:user        "johndoe"
] .

我需要返回与给定 IP、时间范围(从时间到结束时间之间)、url(甚至部分匹配)和用户(甚至部分匹配)匹配的所有结果的查询。
我现在拥有的是基于单个值获取结果的简单查询,如下所示:

PREFIX pref: <http://something> SELECT DISTINCT * WHERE { ?u pref:user USER_VALUE . ?u ?p ?o .  }

这会返回给定用户的所有结果,但前提是给定用户名完全匹配。这意味着如果 USER_VALUE 是 johndoe,它将返回 johndoe 的所有结果,但如果是 john,则不会返回。
我对 SPARQL 的了解非常有限,我感谢任何帮助。谢谢。

【问题讨论】:

    标签: sparql jena apache-jena


    【解决方案1】:

    除了完全匹配之外,您还需要使用FILTER 并使用CONTAINSREGEX 之类的操作。

    例子:

    { ?u pref:user ?user .
       ?u ?p ?o . 
      FILTER( CONTAINS(?user, "john") )
    }
    

    有许多可能有用的 FILTER 函数,包括 REGEX。有关详细信息,请参阅规范。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多