图和三元组存储的应用与实践
1. 组合查询
当在文档和语义世界之间采用联合方法时,可能会需要执行组合查询。组合查询是指同时对文档存储和三元组存储进行查询,以回答与数据库中所有信息相关的问题。
1.1 组合查询示例
组合查询可以是文档来源查询,例如返回特定集合中所有“类型”字段具有特定值,并且由名为“大数据录音公司”的组织添加的文档。
1.2 处理语义提取和丰富的文档
存储的文档可能是经过语义提取和丰富的文本。若文档发生更改,语义数据也会相应改变,此时有两种机制可用于替换从文档中提取并存储在三元组存储中的信息:
- 使用命名图 :使用文档 ID 或其变体作为图的名称,并将所有提取的三元组存储在该图中,这样便于整体更新提取的元数据。此方法适用于所有三元组存储。优点是可跨三元组存储实现工作;缺点是需要手动创建服务器端代码,分别对三元组存储和文档存储执行查询,以解决复杂的文档来源查询。
- 将三元组存储在提取它们的文档中 :若文档结构支持嵌入不同命名空间的信息,如 MarkLogic Server,可将三元组的 XML 表示存储在文档内的元素中。这种方法的优势在于将所有必需的索引链接到同一文档 ID(MarkLogic Server 称为 URI)。MarkLogic Server 有内置搜索引擎,支持全文、范围(小于、大于)查询以及语义(SPARQL)查询,可构建 MarkLogic Server 搜索 API 查询,在一次索引命中(称为搜索索引解析)中回答整个查询。