SPARQL-从特定名称空间中查找所有属性

时间:2020-04-01 20:44:40

标签: regex sparql

我正在尝试从特定名称空间确定数据库中使用的唯一属性集。例如,如果我想查看我们从都柏林核心集中使用的所有属性,请尝试:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT DISTINCT
    ?pred   
WHERE 
    { 
    ?sub ?pred ?obj  . 
    FILTER regex(?pred, "purl.org/dc/elements") 
    } 
limit 1000

我正在查看所有三元组,通过正则表达式使用DC名称空间过滤仅三元组,然后返回不同谓词的列表。运行该查询时该查询超时,因此我不确定这是由于检查了卷还是查询本身是否有故障。 我真正想要的是以DC名称空间开头的谓词列表。

1 个答案:

答案 0 :(得分:2)

FILTER( STRSTARTS(str(?pred), str(dc:)) )

这有两件事:

  1. 因为str(和STRSTARTS)对字符串起作用,所以用REGEX将URI转换为字符串。
  2. 使用dc:作为谓词URL的简写。解析器会将其扩展为完整的http://purl.org/dc/elements/1.1/