SPARQL搜索查询

时间:2016-10-02 11:52:57

标签: sparql jena apache-jena

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

要完成除完全匹配以外的任何操作,您需要使用FILTER并使用CONTAINSREGEX等操作。

示例:

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

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