You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SPARQL从GraphDB的RDF数据中检索含共现关键词的文本

GraphDB中RDF文本双关键词共现的SPARQL实现方案

基础查询写法(适配当前4000条文献数据量)

直接运行以下语句即可拿到所有符合要求的文本:

PREFIX kg: <http://www.ztonebv.nl/KG#>
SELECT DISTINCT ?textValue ?relatedNode
WHERE {
  # 匹配所有关联hasText属性的节点与对应文本内容
  ?relatedNode kg:hasText ?textValue .
  # 双条件过滤:文本同时包含两个目标术语,大小写不敏感
  FILTER(
    REGEX(?textValue, "gut microbiota", "i") &&
    REGEX(?textValue, "diabetes", "i")
  )
}
  • 语句中提前声明了kg前缀,避免重复书写冗长的IRI地址
  • 正则匹配的i参数为忽略大小写配置,可以覆盖"Gut Microbiota""DIABETES"等大小写变体,避免漏检;如果需要严格匹配原始大小写,删除该参数即可
  • 加了DISTINCT去重,避免重复的文本条目出现在结果里

大数据量优化写法(可选)

如果后续数据集规模上涨到十万、百万级,正则过滤的性能会下降,可以用GraphDB自带的Lucene全文索引能力提速,查询写法如下:

PREFIX kg: <http://www.ztonebv.nl/KG#>
PREFIX luc: <http://www.ontotext.com/connectors/lucene#>
SELECT DISTINCT ?textValue ?relatedNode
WHERE {
  # 调用Lucene索引做布尔检索
  ?query luc:query '"gut microbiota" AND "diabetes"' ;
         luc:entities ?relatedNode .
  ?relatedNode kg:hasText ?textValue .
}

该写法检索速度远高于正则匹配,使用前需要先在GraphDB中为hasText属性创建对应的Lucene全文索引即可。

内容的提问来源于stack exchange,提问作者noobmaster69

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 06:18:23