假设我有从关系数据库表中检索到的数据行(可能通过连接表)。每行有几列(如A、B、C、D..),以下行是我所拥有的。
A1、B1、C1、D1
A1、B2、C1、D1
A1、B2、C1、D2
如果我要在实体之间绘制网络图,我可以通过创建多个三元组将信息保存在 RDF 中,例如
A1 连接到 B1
B1 连接到 C1
C1 连接到 D1
A1 连接到 B2
B2 连接到 C1
C1 连接到 D2 (以及相反的方向)
因此,在双向图中,它们将是
A1 -- B1 -- C1 -- D1
'----- B2 --- ' '--- D2
这种方法的一个问题是我现在引入了歧义,因为通过查看上图,我还可以得到 A1 -- B1 -- C1 -- D2 之间的联系,而我在原始行中没有。我的第一个问题- 一般来说,当将数据库行保存到网络图中时会发生这种情况(或者我做错了什么?)
为了保留原始信息,我可以将每行中的四个实体分组到一个 bnode 中,但我担心这是否会给我在创建图形连接时提供与以前相同的灵活性(和性能)。稍后我可能只需要获取 As 和 Bs 或其他子集组合之间的所有连接。这也不会像以前那样节省空间,因为您必须在不同的 bnode 之间存储重复的信息。
所以我的第二个问题是- 将行存储在 RDF 中但仍保持灵活性和性能的最佳方式是什么?我查看了 WWW.org 将 RDF 映射到 RDF 的建议(http://www.w3.org/TR/r2rml/以及http://www.w3.org/TR/rdb-direct-mapping/) ,但似乎我必须将数据分组到同一行 ID 下才能保留数据。这是唯一的方法吗?
谢谢。