探索 sameAs.cc:5 亿 owl:sameAs 语句的闭包与分析
1. 数据压缩与身份闭包计算
数据压缩在整个流程中起着关键作用,它显著减少了后续处理的输入规模。原本约 5.589 亿个身份对,经过压缩后减少到约 3.31 亿个,去除了约 280 万个自反对和约 2.25 亿个重复对称对,使得输入规模降低了超过 40%。
接下来是计算身份闭包 ∼i。这里用 N 表示 RDF 节点的集合,隐式身份关系 ∼i 是从节点到身份集的映射(N → P(N))。为了提高空间效率,我们给每个身份集关联一个键:key : ID →k P(N),并将每个 RDF 项映射到其所属唯一身份集的键 val : N →v ID,通过 key(val(x)) 就能得到 x 的身份集。我们借助 RocksDB 持久键值存储,通过专门设计的 SWI Prolog API 实现了这个键值方案。
在计算 ∼i 时,会不断推导出新的对 (x, y)。为了高效存储,分以下三种情况处理:
- 情况一:x 和 y 都不在任何身份集中 :将 x 和 y 分配到同一个新的唯一键对应的新身份集中,即 x →v id,y →v id,且 id →k {x, y}。
- 情况二:只有 x 已在一个身份集中 :把 x 所在身份集的键扩展为包含 y,即 y →v val(x),且 val(x) →k key(val(x)) ∪ {y}。若只有 y 在身份集中,处理方式类似。
- 情况三:x 和 y 已存在,但在不同身份集中 :选择其中一个键来表示两个身份集的并集,即 val(x) →k
超级会员免费看
订阅专栏 解锁全文
13

被折叠的 条评论
为什么被折叠?



