0

以下查询:

PREFIX qb: <http://purl.org/linked-data/cube#>
SELECT DISTINCT ?subject
WHERE 
{
  ?x qb:component ?subject .
}

通过这个公开可用的端点部署:http ://statistics.gov.scot/sparql-beta生成可用主题列表:

http://statistics.gov.scot/def/component-specification/pupil-attainment/refArea
http://statistics.gov.scot/def/component-specification/pupil-attainment/refPeriod
http://statistics.gov.scot/def/component-specification/pupil-attainment/measureType
http://statistics.gov.scot/def/component-specification/pupil-attainment/count
http://statistics.gov.scot/def/component-specification/pupil-attainment/pupils
http://statistics.gov.scot/def/component-specification/pupil-attainment/ratio

问题

我想使用正则表达式过滤可用的结果,类似于链接的示例

PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>

SELECT ?g
WHERE
{ ?y vcard:Given ?g .
  FILTER regex(?g, "r", "i") }

尝试时:

PREFIX qb: <http://purl.org/linked-data/cube#>
SELECT DISTINCT ?subject
WHERE 
{
  ?a qb:component ?subject .
  FILTER regex(?subject, "p", "i")
}

查询返回没有行的表。有没有办法过滤获得的值?

4

1 回答 1

3

我认为您应该调用str函数 on ?subject,它不是字符串而是 URI,所以首先您必须将其转换为字符串。

这应该有效:

PREFIX qb: <http://purl.org/linked-data/cube#>
SELECT DISTINCT ?subject
WHERE 
{
  ?a qb:component ?subject .
  FILTER regex(str(?subject), "p", "i")
}
于 2017-11-21T22:37:32.077 回答