SPARQL 图的概念对我来说仍然是抽象的。
图表是否类似于 SQL 表?一个三元组可以属于多个图吗?
有没有办法获取属于三元组的图的 URI?
有没有办法获取存储在 GraphDB 存储库中的每个图的 URI?获取默认图的 URI?
谢谢,
SPARQL 图的概念对我来说仍然是抽象的。
图表是否类似于 SQL 表?一个三元组可以属于多个图吗?
有没有办法获取属于三元组的图的 URI?
有没有办法获取存储在 GraphDB 存储库中的每个图的 URI?获取默认图的 URI?
谢谢,
为了理解这些差异,我们可以首先参考数据模型本身:
关系模型
SQL
在关系数据库上运行。一般而言,关系模型是将数据及其依赖关系建模为结构化表的一种方法。如果我们要查询由多个表构建的信息,那么我们执行所谓的join
操作,即检索不同表中元素之间的关系。join
操作员经常使用表中通用的键。此模型的一个缺点是当您需要执行许多此类join
操作来检索所需信息时。在这种情况下,响应变得非常缓慢,性能显着下降。
图模型
相反,SparQL
它是一种查询语言,具有类似 SQL 的语法,但对图形数据进行操作。图形数据模型不将数据存储为表格。相反,它使用三重存储(另一种选择是使用属性图,但您的问题是指三重存储)。RDF 三元组是用于描述图形数据模型中语句的 W3C 标准方式。它由Subject
, Predicate
,组成Object
。
Subject
是三元组所指的实体,Predicate
是它所具有的关系类型,Object
是主体所连接的实体或属性。主题始终具有唯一标识符(例如,URI
),而对象可以是文字或具有 URI 的另一个实体。
进一步比较
您可以在本书的第 2 章(存储连接数据的选项)中查看模型的更详细比较:图形数据库,第 2 版,作者:Ian Robinson、Jim Webber、Emil Eifrem
回到你的问题
图表是否类似于 SQL 表?一个三元组可以属于多个图吗?
不,图表不是 SQL 表。是的,一个三元组可以出现在不同的图表中(只要三元组具有相同的主语、谓语和宾语)。但是,如果您使用不同的本体,三元组将出现在不同的上下文中。
有没有办法获取属于三元组的图的 URI?有没有办法获取存储在 GraphDB 存储库中的每个图的 URI?获取默认图的 URI?
SparQL 查询是图形模式。您需要指定要搜索的结构类型。
正如 UninformedUser 评论的那样:
所有三元组
select distinct ?g {graph ?g {?s ?p ?o}}
包含特定三元组的所有结构
select distinct ?g {graph ?g {:s :p :o}}