govdata.de SPARQL查询伪重复条目原因及去除方法
SPARQL查询govdata.de遇到的两个问题解答
一、标题伪重复(带@de与不带的差异)
- @de的含义:这是RDF字面量的语言标签,
@de表示该标题为德语版本。在DCAT规范中,dct:title这类字段支持多语言标注,用于区分不同语言的内容。 - 重复原因:出现两个条目是因为数据存储存在冗余——一个是带语言标签的规范条目,另一个是未添加语言标签的遗留数据。而govdata.de网页门户做了去重处理,会自动合并同内容的多语言/无标签条目,所以仅显示一个。
- 优化查询建议:若只想获取带德语标签的标题,可修改查询添加语言筛选:
PREFIX dcat: <http://www.w3.org/ns/dcat#> PREFIX dct: <http://purl.org/dc/terms/> SELECT DISTINCT * WHERE { ?dataset a dcat:Dataset . ?dataset dct:title ?title . FILTER(LANG(?title) = "de") ?dataset dct:description ?description . }
二、关联SPARQL的dataset与门户详情URL
govdata.de的门户详情URL采用固定前缀+数据集标识符的结构,可通过以下方式关联:
- 获取数据集标识符:在SPARQL查询中加入
dct:identifier ?id字段,?id的值通常就是详情URL最后一段的内容(如gerichte8e8c3、gerichte-2021-07-13)。 - 示例查询:
PREFIX dcat: <http://www.w3.org/ns/dcat#> PREFIX dct: <http://purl.org/dc/terms/> SELECT DISTINCT ?dataset ?title ?id WHERE { ?dataset a dcat:Dataset . ?dataset dct:title ?title . ?dataset dct:identifier ?id . }
- 拼接详情URL:将查询得到的
?id值拼接到门户详情页前缀后,即可得到对应详情页面地址。 - 补充说明:部分数据集的
dcat:landingPage属性可能直接指向门户详情页,也可在查询中加入该字段验证:?dataset dcat:landingPage ?landingUrl。
内容的提问来源于stack exchange,提问作者Matteo
相关产品推荐
相关产品推荐

