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

如何使用SPARQL获取RDF数据集属性的minCardinality与maxCardinality?

如何用SPARQL统计数据集中属性的最小和最大基数?

要实现列出数据集中所有属性的最小基数(minCardinality)和最大基数(maxCardinality),且当部分主体未包含某属性时,该属性的最小基数视为0,可以使用以下SPARQL查询:

SELECT ?property (MIN(?count) AS ?minCardinality) (MAX(?count) AS ?maxCardinality)
WHERE {
  # 提取数据集中所有唯一主体
  { SELECT DISTINCT ?s WHERE { ?s ?p ?o } }
  # 提取数据集中所有唯一属性
  { SELECT DISTINCT ?property WHERE { ?s ?property ?o } }
  # 匹配主体的属性取值(无取值时返回空)
  OPTIONAL { ?s ?property ?o }
  # 统计单个主体对应属性的取值数量,无取值则为0
  BIND(COUNT(?o) AS ?count)
}
GROUP BY ?property
ORDER BY ?property

查询逻辑说明

  • 覆盖所有主体-属性组合:通过两个子查询分别获取数据集中所有唯一的主体和属性,确保每个属性与每个主体的组合都被统计到。
  • 单主体属性计数:OPTIONAL关键字处理主体无对应属性的场景,COUNT(?o)会自动返回0;若有取值则统计具体数量。
  • 全局基数计算:按属性分组后,用MIN(?count)得到该属性在所有主体中的最小出现次数,MAX(?count)得到最大出现次数。

示例数据集验证结果

将上述查询运行在你提供的FOAF数据集上,会得到如下结果:

属性(property)最小基数(minCardinality)最大基数(maxCardinality)
http://xmlns.com/foaf/0.1/familyName11
http://xmlns.com/foaf/0.1/knows02

内容的提问来源于stack exchange,提问作者Martynas Jusevičius

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 10:55:13