sparql - 获取分类单元的同义词而不重复
问题描述
我正在查询此端点以提取分类单元及其同义词,我希望最终结果是一个 JSON 文件,其中包含分类单元 URI 及其名称以及同义词:
{
TAXON_URI: [TAXON_NAME, TAXON_SYN1, .....],
...
}
我使用的查询:
PREFIX ns0: <http://aims.fao.org/aos/agrontology#>
PREFIX skosxl: <http://www.w3.org/2008/05/skos-xl#>
SELECT ?taxon_name_uri ?taxon_name ?taxon_synonym
WHERE{
# select only 'Taxonomic terms for plants' !!
?taxon_name_uri ns0:hasTermType "Taxonomic terms for plants".
?taxon_name_uri ns0:hasSynonym ?taxon_synonym_uri.
?taxon_name_uri skosxl:literalForm ?taxon_name.
?taxon_synonym_uri skosxl:literalForm ?taxon_synonym.
FILTER (lang(?taxon_synonym) = 'en' || lang(?taxon_synonym) = 'fr')
}
ORDER BY ?taxon_name_uri
LIMIT 100
结果似乎合乎逻辑,但这并不是我想要的,这是一个说明我的问题的示例:
taxon_name_uri taxon_name taxon_synonym
------------------------------------------------------------------------
agrovoc:/xl_en_1299492690497 "Plantago ovata" "Plantago minima"
agrovoc:/xl_en_1299492690497 "Plantago ovata" "Plantago gooddingii"
agrovoc:/xl_en_1299492690497 "Plantago ovata" "Plantago brunnea"
agrovoc:/xl_en_1299492690497 "Plantago ovata" "Plantago fastigiata"
agrovoc:/xl_en_1299492690497 "Plantago ovata" "Plantago insularis"
agrovoc:/xl_en_1299492691630 "Plantago brunnea" "Plantago ovata"
agrovoc:/xl_en_1299492691706 "Plantago fastigiata" "Plantago ovata"
agrovoc:/xl_en_1299492691791 "Plantago gooddingii" "Plantago ovata"
agrovoc:/xl_en_1299492691878 "Plantago insularis" "Plantago ovata"
agrovoc:/xl_en_1299492691969 "Plantago minima" "Plantago ovata"
这是我根据上面的结果得到的 JSON:
{
"http://aims.fao.org/aos/agrovoc/xl_en_1299492690497": [
"Plantago ovata",
"Plantago minima",
"Plantago gooddingii",
"Plantago brunnea",
"Plantago fastigiata",
"Plantago insularis"
],
"http://aims.fao.org/aos/agrovoc/xl_en_1299492691630": [
"Plantago brunnea",
"Plantago ovata"
],
"http://aims.fao.org/aos/agrovoc/xl_en_1299492691706": [
"Plantago fastigiata",
"Plantago ovata"
],
"http://aims.fao.org/aos/agrovoc/xl_en_1299492691791": [
"Plantago gooddingii",
"Plantago ovata"
],
"http://aims.fao.org/aos/agrovoc/xl_en_1299492691878": [
"Plantago insularis",
"Plantago ovata"
],
"http://aims.fao.org/aos/agrovoc/xl_en_1299492691969": [
"Plantago minima",
"Plantago ovata"
]
}
我在这里有很多重复,我只对 SPARQL 查询结果的前 5 行感兴趣 where taxon_name
is Plantago ovata
,基于这个想法,JSON 将如下所示:
{
"http://aims.fao.org/aos/agrovoc/xl_en_1299492690497": [
"Plantago ovata",
"Plantago minima",
"Plantago gooddingii",
"Plantago brunnea",
"Plantago fastigiata",
"Plantago insularis"
]
}
有没有办法做到这一点 ?
解决方案
推荐阅读
- java - 用整数数组映射字符串数组的元素
- laravel-5 - Bootstrap 下拉菜单没有显示出什么问题?
- react-admin - react-admin:在 ReferenceFields 上处理 null
- php - Laravel 缓存项目仍在访问数据库
- c - 将参数传递给C中的函数
- mysql - 带有springboot和mysql的Docker与链接和运行问题
- node.js - 正在尝试 MQTT 连接...失败,rc=-2 5 秒后重试
- python - Python Lambda 混淆
- dynamics-crm - Microsoft 动态中的客户端身份验证方案“匿名”禁止 HTTP 请求
- cmake - Android NDK 发布标志