Gstore官网学习五:支持SPARQL查询语法

9 篇文章 2 订阅
订阅专栏

一、图模式(Graph Patterns)

本文档主要参考了 SPARQL 1.1 标准文档,同时也增加了 gStore 自身定制化的内容,如果想要详细了解 gStore 支持的 SPARQL 语句,请仔细阅读我们的文档吧!

<刘亦菲> <姓名> "刘亦菲" .
<刘亦菲> <姓名> "Crystal Liu" .
<刘亦菲> <性别> "女" .
<刘亦菲> <星座> "处女座" .
<刘亦菲> <职业> "演员" .

<林志颖> <姓名> "林志颖" .
<林志颖> <性别> "男" .
<林志颖> <职业> "演员" .
<林志颖> <职业> "导演" .

<胡军> <姓名> "胡军" .
<胡军> <性别> "男" .
<胡军> <星座> "双鱼座" .
<胡军> <职业> "演员" .
<胡军> <职业> "配音" .
<胡军> <职业> "制片" .
<胡军> <职业> "导演" .

<天龙八部> <主演> <林志颖> .
<天龙八部> <主演> <刘亦菲> .
<天龙八部> <主演> <胡军> .
<天龙八部> <类型> <武侠片> .
<天龙八部> <类型> <古装片> .
<天龙八部> <类型> <爱情片> .
<天龙八部> <豆瓣评分> "8.3"^^<http://www.w3.org/2001/XMLSchema#float> .
<天龙八部> <上映时间> "2003-12-11T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> .

<恋爱大赢家> <主演> <林志颖> .
<恋爱大赢家> <主演> <刘亦菲> .
<恋爱大赢家> <类型> <爱情片> .
<恋爱大赢家> <类型> <剧情片> .
<恋爱大赢家> <豆瓣评分> "6.1"^^<http://www.w3.org/2001/XMLSchema#float> .
<恋爱大赢家> <上映时间> "2004-11-30T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> .

关键词均不区分大小写。
在这里插入图片描述

1.1 最简单的图模式

我们先给出一个最简单的查询:

SELECT ?movie
WHERE
{
	?movie <主演> <刘亦菲> .
}

查询由两部分组成:

  • SELECT 语句指定需要输出查询结果的变量
  • WHERE 语句提供用来与数据图匹配的图模式

上面的查询中,图模式由单条三元组 ?movie <主演> <刘亦菲> 构成,其中作为主语的 ?movie 是变量,作为谓词的 <主演> 和作为宾语的 <刘亦菲> 是 IRI (International Resource Identifier, 国际资源标识符)。这个查询将返回由刘亦菲主演的所有影视作品,在示例数据上运行结果如下:
在这里插入图片描述

在这里插入图片描述
三元组的主语、谓词、宾语都可以是 IRI ;宾语还可以是 RDF 字面量(RDF Literal)。以下查询将给出示例数据中所有职业为导演的人物:

SELECT ?person
WHERE
{
	?person <职业> "导演" .
}

其中 “导演” 是一个 RDF 字面量。
结果如下:
在这里插入图片描述

在这里插入图片描述
当前 gStore 版本下,带有数据类型的 RDF 字面量在查询中需要添加与数据文件中相应的后缀。例如,以下查询将给出豆瓣评分为 8.3 的影视作品:

SELECT ?movie
WHERE
{
	?movie <豆瓣评分> "8.3"^^<http://www.w3.org/2001/XMLSchema#float> .
}

结果如下:
在这里插入图片描述
其他的常见数据类型包括

  • http://www.w3.org/2001/XMLSchema#integer(整数类型)
  • http://www.w3.org/2001/XMLSchema#decimal(定点类型)
  • xsd:double(双精度浮点类型)
  • http://www.w3.org/2001/XMLSchema#string(字符串类型)
  • http://www.w3.org/2001/XMLSchema#boolean(布尔类型)
  • http://www.w3.org/2001/XMLSchema#dateTime(日期时间类型)

数据文件中也可能出现其他数据类型,只需在查询中使用 ^^<数据类型后缀> 的形式即可。

1.2 基本图模式 (Basic Graph Pattern)

基本图模式即为三元组的集合;上一节中的两个查询的 WHERE 语句均只有最外层大括号,因此属于基本图模式;加上最外层大括号,即为由单个基本图模式构成的组图模式(Group Graph Pattern)。

举例:上一节的两个查询中基本图模式都由单个三元组构成。以下查询使用了由多个三元组构成的基本图模式,将给出示例数据中天龙八部的所有男性主演:

SELECT ?person
WHERE
{
	<天龙八部> <主演> ?person .
	?person <性别> "男" .
}

结果如下:
在这里插入图片描述

1.3 组图模式 (Group Graph Pattern)

组图模式以配对的大括号分隔。组图模式既可以像上一节介绍的那样由单个基本图模式构成,也可以由多个子组图模式和以下的

  • OPTIONAL
  • UNION
  • MINUS
    三种运算嵌套而成。FILTER 则在一个组图模式的范围内过滤结果。

1.3.1 OPTIONAL

用法:pattern1 OPTIONAL { pattern2 }
pattern1 OPTIONAL { pattern2 }

查询结果必须匹配 pattern1 ,并选择性地匹配 pattern2 。pattern2 被称为 OPTIONAL 图模式。

如果 pattern2 存在匹配,则将其加入 pattern1 的匹配结果;

否则,仍然输出 pattern1 的匹配结果。

因此,OPTIONAL 常用于应对部分数据缺失的情况。

举例

下面的查询给出示例数据中人物的性别和星座信息。
其中,只要存在性别信息的人物都会被返回,不论是否同时存在该人物的星座信息;若同时存在,则额外返回。

SELECT ?person ?gender ?horoscope
WHERE
{
	?person <性别> ?gender .
	OPTIONAL
	{
		?person <星座> ?horoscope .
	}
}

结果如下:
在这里插入图片描述

1.3.2 UNION

关键词 UNION 的使用语法与 OPTIONAL 类似。

以 UNION 相连的图模式中,只要存在一个与某数据匹配,该数据就与以 UNION 相连的整体匹配。因此,UNION 可以理解为对它所连接的各图模式的匹配结果集合求并集由于允许重复结果,实际上采用多重集语义)。

举例

下面的查询给出示例数据中类别是古装片或剧情片的影视作品:

SELECT ?movie
WHERE
{
	{?movie <类型> <古装片> .}
	UNION
	{?movie <类型> <剧情片> .}
}

结果如下:
在这里插入图片描述

1.3.3 MINUS

关键词 MINUS 的使用语法与 OPTIONAL, UNION 类似。

MINUS 左边和右边的图模式的匹配均会被计算,从左边的图模式的匹配结果中移除能与右边的图模式匹配的部分作为最终结果。因此,MINUS 可以理解为对它所连接的两个图模式的匹配结果集合求差(左为被减集合,多重集语义)。

下面的查询将给出示例数据中主演了天龙八部但没有主演恋爱大赢家的人物:

举例

下面的查询将给出示例数据中主演了天龙八部但没有主演恋爱大赢家的人物:

SELECT ?person
WHERE
{
	<天龙八部> <主演> ?person .
	MINUS
	{<恋爱大赢家> <主演> ?person .}
}

结果如下:
在这里插入图片描述

1.3.4 FILTER

关键词 FILTER 之后紧随着一个约束条件,当前组图模式中不满足此条件的结果将被过滤掉,不被返回。FILTER 条件中可以使用等式、不等式以及各种内建函数

举例

下面的查询将给出示例数据中豆瓣评分高于 8 分的影视作品:

SELECT ?movie
WHERE
{
	?movie <豆瓣评分> ?score .
	FILTER (?score > "8"^^<http://www.w3.org/2001/XMLSchema#float>)
}

结果如下:
在这里插入图片描述
无论 FILTER 放置在一个组图模式中的什么位置,只要仍然处于同一个嵌套层,则其语义不变,约束条件的作用范围仍然是当前组图模式。比如以下的查询就与前一个查询等价:

SELECT ?movie
WHERE
{
	FILTER (?score > "8"^^<http://www.w3.org/2001/XMLSchema#float>)
	?movie <豆瓣评分> ?score .
}
举例2(重要)

常用于 FILTER 条件的一个内建函数是正则表达式 REGEX 。下面的查询将给出示例数据中的刘姓人物:

SELECT ?person
WHERE
{
	?person <姓名> ?name .
	FILTER REGEX(?name, "刘.*")
}

结果如下:
在这里插入图片描述

二、聚合函数 (Aggregates)

2.1 用法

聚合函数用在 SELECT 语句中,语法如下:

SELECT (AGGREGATE_NAME(?x) AS ?y)
WHERE
{
	...
}
  • AGGREGATE_NAME 是聚合函数的名称

  • 变量 ?x 是聚合函数作用的对象

  • 变量 ?y最终结果中聚合函数值的列名

聚合函数作用于各组结果。返回的全部结果默认作为一组

2.2 gStore支持的聚合函数

2.2.1 COUNT

用于计数的聚合函数。

举例

下面的查询将给出示例数据中职业为演员的人物的数目:

SELECT (COUNT(?person) AS ?count_person)
WHERE
{
	?person <职业> "演员" .
}

结果如下:
在这里插入图片描述

2.2.2 SUM

用于求和的聚合函数。

举例

下面的查询将给出示例数据中所有电影的豆瓣评分之和:

SELECT (SUM(?score) AS ?sum_score)
WHERE
{
	?movie <豆瓣评分> ?score .
}

结果如下:
在这里插入图片描述

2.2.3 AVG

用于求平均值的聚合函数。

举例

下面的查询将给出示例数据中所有电影的平均豆瓣评分:

SELECT (AVG(?score) AS ?avg_score)
WHERE
{
	?movie <豆瓣评分> ?score .
}

结果如下:
在这里插入图片描述

2.2.4 MIN

用于求最小值的聚合函数。

举例

下面的查询将给出示例数据中所有电影的最低豆瓣评分:

SELECT (MIN(?score) AS ?min_score)
WHERE
{
	?movie <豆瓣评分> ?score .
}

结果如下:
在这里插入图片描述

2.2.5 MAX

用于求最大值的聚合函数。

举例

下面的查询将给出示例数据中所有电影的最高豆瓣评分:

SELECT (MAX(?score) AS ?max_score)
WHERE
{
	?movie <豆瓣评分> ?score .
}

结果如下:
在这里插入图片描述

2.2.6 GROUP BY

如果希望按照某一个变量的值对结果分组,可以使用关键词 GROUP BY 。

举例

例如,下面的查询将给出示例数据中的所有职业及对应的人数:

SELECT ?occupation (COUNT(?person) AS ?count_person)
WHERE
{
	?person <职业> ?occupation .
}
GROUP BY ?occupation

结果如下:
在这里插入图片描述

三、结果序列修饰符(Solution Sequences and Modifiers)

3.1 定义

以下的关键词均属于结果序列修饰符,它们对查询结果做后处理,以形成最终返回的结果。

3.2 DISTINCT: 去除重复结果

SELECT 语句不带关键词 DISTINCT 的查询会在最终结果中保留重复的结果。

举例

例如下面的查询给出示例数据中所有的职业:

SELECT ?occupation
WHERE
{
	?person <职业> ?occupation .
}

结果如下:
在这里插入图片描述
如果希望查看不重复的职业种类,则可以在 SELECT 语句中添加关键词 DISTINCT :

SELECT DISTINCT ?occupation
WHERE
{
	?person <职业> ?occupation .
}

结果如下:
在这里插入图片描述
DISTINCT 也可以在聚合函数 COUNT 中使用。下面的查询给出示例数据中的职业种类数目:

SELECT (COUNT(DISTINCT ?occupation) AS ?count_occupation)
WHERE
{
	?person <职业> ?occupation .
}

结果如下:.
在这里插入图片描述

3.3 ORDER BY: 排序

查询结果默认是无序的。如果希望根据某些变量的值对结果进行排序,可以在 WHERE 语句后面添加 ORDER BY 语句。

举例

例如下面的查询将示例数据中的影视作品按照豆瓣评分排序,未指定顺序时默认为升序:

SELECT ?movie ?score
WHERE
{
	?movie <豆瓣评分> ?score
}
ORDER BY ?score

结果如下:
在这里插入图片描述

如果希望降序排序,需要用关键词 DESC 修饰变量名:

SELECT ?movie ?score
WHERE
{
	?movie <豆瓣评分> ?score
}
ORDER BY DESC(?score)

结果如下:
在这里插入图片描述
ORDER BY 语句可以包含多个以空格分隔的变量,每个变量都可用 DESC 修饰。gStore 暂不支持在 ORDER BY 语句中使用含四则运算的表达式及内建函数。

3.4 OFFSET: 跳过一定数量的结果

OFFSET 语句放在 WHERE 语句之后,
其语法如下:

OFFSET nonnegative_integer

其中 nonnegative_integer 须为非负整数,表示需要跳过的结果数量。

OFFSET 0 符合语法,但不会对结果产生影响。

由于查询结果默认无序,SPARQL 语义不保证跳过的结果满足任何确定性的条件。

因此,OFFSET 语句一般与 ORDER BY 语句配合使用。

举例

下面的查询将示例数据中的影视作品按豆瓣评分从低到高排序,并跳过评分最低的影视作品:

SELECT ?movie ?score
WHERE
{
	?movie <豆瓣评分> ?score .
}
ORDER BY ?score
OFFSET 1

结果如下:

3.5 LIMIT: 限制结果数量

LIMIT 语句的语法与 OFFSET 语句类似:

LIMIT nonnegative_integer
其中 nonnegative_integer 须为非负整数,表示允许的最大结果数量。

与 OFFSET 类似,由于查询结果默认无序,LIMIT 语句一般与 ORDER BY 语句配合使用。

举例

下面的查询给出示例数据中豆瓣评分最高的影视作品:

SELECT ?movie ?score
WHERE
{
	?movie <豆瓣评分> ?score .
}
ORDER BY DESC(?score)
LIMIT 1

结果如下:
在这里插入图片描述

四、图更新

4.1 定义

通过

  • INSERT DATA
  • DELETE DATA
  • DELETE WHERE 查询

我们可以向数据库中插入或从数据库中删除三元组。

4.2 INSERT DATA

INSERT DATA 用于向数据库中插入三元组。其语法与 SELECT 查询类似,区别在于构成组图模式的三元组中不能含有变量。

举例

下面的查询向示例数据中插入影视作品仙剑奇侠传的相关信息:

INSERT DATA
{
	<仙剑奇侠传> <主演> <胡歌> .
	<仙剑奇侠传> <主演> <刘亦菲> .
	<仙剑奇侠传> <类型> <武侠片> .
	<仙剑奇侠传> <类型> <古装片> .
	<仙剑奇侠传> <类型> <爱情片> .
	<仙剑奇侠传> <豆瓣评分> "8.9"^^<http://www.w3.org/2001/XMLSchema#float> .
}

“图模式-最简单的图模式”一节中出现过的查询

SELECT ?movie
WHERE
{
	?movie <主演> <刘亦菲> .
}

在插入上述数据后,结果变为:
在这里插入图片描述

4.3 DELETE DATA

DELETE DATA 用于从数据库中删除三元组。其用法与 INSERT DATA 完全类似。

4.4 DELETE WHERE

DELETE DATA 用于从数据库中删除符合条件的三元组;

相比起 DELETE DATA ,它的 WHERE 语句与 SELECT 查询的 WHERE 语句是完全相同的,也就是说三元组中允许含有变量。

举例

例如,下面的查询删除示例数据中所有武侠片的相关信息:

DELETE WHERE
{
	?movie <类型> <武侠片> .
	?movie ?y ?z .
}

此时再次运行“图模式-最简单的图模式”一节中出现过的查询:

SELECT ?movie
WHERE
{
	?movie <主演> <刘亦菲> .
}

结果变为:
在这里插入图片描述

五、高级功能

5.1 路径相关查询

在内核版本 v0.9 中,gStore 加入了与数据图中结点间的路径相关的一系列查询,目前包括环路查询和最短路径查询。

为了更好地演示路径相关查询的功能,使用以下的社交关系数据作为示例数据:

<Alice> <关注> <Bob> .
<Alice> <喜欢> <Bob> .
<Alice> <不喜欢> <Eve> .
<Bob> <关注> <Alice> .
<Bob> <喜欢> <Eve> .
<Carol> <关注> <Bob> .
<Carol> <喜欢> <Bob> .
<Carol> <不喜欢> <Francis> .
<Dave> <关注> <Alice> .
<Dave> <关注> <Eve> .
<Dave> <不喜欢> <Francis> .
<Eve> <喜欢> <Carol> .
<Francis> <喜欢> <Carol> .
<Francis> <不喜欢> <Dave> .
<Francis> <不喜欢> <Eve> .

上述数据的图示如下:
在这里插入图片描述
如无特殊说明,返回路径的函数均以如下 JSON 格式字符串表示一条路径/一个环/一个子图:
在这里插入图片描述

5.2 环路查询

查询是否存在包含结点 u 和 v 的一个环。

cyclePath(u, v, directed, pred_set)
cycleBoolean(u, v, directed, pred_set)

用于 SELECT 语句中,与聚合函数使用语法相同。

参数

  • u, v :变量或结点 IRI

  • directed :布尔值,为真表示有向,为假表示无向(图中所有边视为双向)

  • pred_set :构成环的边上允许出现的谓词集合。若设置为空 {} ,则表示允许出现数据中的所有谓词

返回值

  • cyclePath :以 JSON 形式返回包含结点 u 和 v 的一个环(若存在)。若 u 或 v 为变量,对变量的每组有效值返回一个环。
  • cycleBoolean :若存在包含结点 u 和 v 的一个环,返回真;否则,返回假。

举例

下面的查询询问是否存在包含 Carol 、一个 Francis 不喜欢的人(示例数据中即为 Dave 或 Eve ),且构成它的边只能由“喜欢”关系标记的有向环:

select (cycleBoolean(?x, <Carol>, true, {<喜欢>}) as ?y)
where
{
	<Francis> <不喜欢> ?x .
}

结果如下:
在这里插入图片描述
如果希望输出一个满足以上条件的环,则使用下面的查询:

SELECT (cyclePath(?x, <Carol>, true, {<喜欢>}) as ?y)
WHERE
{
	<Francis> <不喜欢> ?x .
}

结果如下,可见其中一个满足条件的环由 Eve 喜欢 Carol - Carol 喜欢 Bob - Bob 喜欢 Eve 顺次构成:(为方便阅读,省略了字符串最外层的双引号和内部双引号的转义)

{
	"paths":[{
    "src":"<Eve>",
    "dst":"<Carol>",
    "edges":
    [{"fromNode":2,"toNode":3,"predIRI":"<喜欢>"},{"fromNode":3,"toNode":1,"predIRI":"<喜欢>"},{"fromNode":1,"toNode":2,"predIRI":"<喜欢>"}],
    "nodes":
    [{"nodeIndex":1,"nodeIRI":"<Bob>"},{"nodeIndex":3,"nodeIRI":"<Carol>"},{"nodeIndex":2,"nodeIRI":"<Eve>"}]
	}]
}

下图标红的部分即为这个环:
在这里插入图片描述

5.3 最短路径查询

查询从结点 u 到结点v 的最短路径。

shortestPath(u, v, directed, pred_set)
shortestPathLen(u, v, directed, pred_set)

用于 SELECT 语句中,与聚合函数使用语法相同。

参数

  • u , v :变量或结点 IRI

  • directed :布尔值,为真表示有向,为假表示无向(图中所有边视为双向)

  • pred_set :构成最短路径的边上允许出现的谓词集合。若设置为空 {} ,则表示允许出现数据中的所有谓词

返回值

  • shortestPath :以 JSON 形式返回从结点 u 到 v 的一条最短路径(若可达)。若 u 或 v 为变量,对变量的每组有效值返回一条最短路径。
  • shortestPathLen :返回从结点 u 到 v 的最短路径长度(若可达)。若 u 或 v 为变量,对变量的每组有效值返回一个最短路径长度数值。

下面的查询返回从 Francis 到一个 Bob 喜欢、关注或不喜欢,且没有被 Francis 不喜欢的人(示例数据中即为 Alice)的最短路径,边上的关系可以是喜欢或关注:

SELECT (shortestPath(<Francis>, ?x, true, {<喜欢>, <关注>}) AS ?y)
WHERE
{
	<Bob> ?pred ?x .
	MINUS { <Francis> <不喜欢> ?x . }
}

下图标红的部分即为这条最短路径

在这里插入图片描述
结果如下:(为方便阅读,省略了字符串最外层的双引号和内部双引号的转义)

{
	"paths":[{
		"src":"<Francis>",
		"dst":"<Alice>",
		"edges":
		[{"fromNode":4,"toNode":3,"predIRI":"<喜欢>"},{"fromNode":3,"toNode":1,"predIRI":"<喜欢>"},{"fromNode":1,"toNode":0,"predIRI":"<关注>"}],
		"nodes":
		[{"nodeIndex":0,"nodeIRI":"<Alice>"},{"nodeIndex":1,"nodeIRI":"<Bob>"},{"nodeIndex":3,"nodeIRI":"<Carol>"},{"nodeIndex":4,"nodeIRI":"<Francis>"}]
		}]
}

如果希望只输出最短路径长度,则使用下面的查询:

SELECT (shortestPathLen(<Francis>, ?x, true, {<喜欢>, <关注>}) AS ?y)
WHERE
{
	<Bob> ?pred ?x .
	MINUS { <Francis> <不喜欢> ?x . }
}

结果如下:(为方便阅读,省略了字符串最外层的双引号和内部双引号的转义)

{"paths":[{"src":"<Francis>","dst":"<Alice>","length":3}]}

5.4 可达性 / K 跳可达性查询

查询从结点 u 到结点 v 是否可达 / 是否 K 跳可达(即存在以 u 为起点、以 v 为终点,长度小于或等于 K 的路径)。

kHopReachable(u, v, directed, k, pred_set)
kHopReachablePath(u, v, directed, k, pred_set)

参数

  • u, v :变量或结点 IRI

  • k :若置为非负整数,则为路径长度上限(查询 K 跳可达性);若置为负数,则查询可达性

  • directed :布尔值,为真表示有向,为假表示无向(图中所有边视为双向)

  • pred_set :构成路径的边上允许出现的谓词集合。若设置为空 {} ,则表示允许出现数据中的所有谓词

返回值

  • kHopReachable:若从结点 u 到结点 v 可达(或 K 跳可达,取决于参数 k 的取值),返回真;否则,返回假。若 u 或 v 为变量,对变量的每组有效值返回一个真/假值。
  • kHopReachablePath:返回任意一条从结点 u 到结点 v 的路径(若可达)或K跳路径,即长度小于或等于k的路径(若K跳可达,取决于参数 k 的取值)。若 u 或 v 为变量,对变量的每组有效值返回一条路径(若可达)或K跳路径(若K跳可达)。

下面的查询效仿上一节“最短路径查询”中的示例查询:起点为 Francis ,终点为一个 Bob 喜欢、关注或不喜欢,且没有被 Francis 不喜欢的人(示例数据中即为 Alice)。询问这两人之间是否通过喜欢或关注关系 2 跳或以内可达。

SELECT (kHopReachable(<Francis>, ?x, true, 2, {<喜欢>, <关注>}) AS ?y)
WHERE
{
	<Bob> ?pred ?x .
	MINUS { <Francis> <不喜欢> ?x . }
}

由于已知满足条件的最短路径长度为 3 :
在这里插入图片描述
因此上述查询的结果为假:

{"paths":[{"src":"<Francis>","dst":"<Alice>","value":"false"}]}

另一方面,Francis 和 Alice 之间是可达的,只是最短路径长度超出了上述限制。因此若查询可达性(将 k 设置为负数),则会返回真:

SELECT (kHopReachable(<Francis>, ?x, true, -1, {<喜欢>, <关注>}) AS ?y)
WHERE
{
	<Bob> ?pred ?x .
	MINUS { <Francis> <不喜欢> ?x . }
}

结果如下:

{"paths":[{"src":"<Francis>","dst":"<Alice>","value":"true"}]}

若希望返回一条两人之间满足条件的路径,则可以调用kHopReachablePath函数:

SELECT (kHopReachablePath(<Francis>, ?x, true, -1, {<喜欢>, <关注>}) AS ?y)
WHERE
{
	<Bob> ?pred ?x .
	MINUS { <Francis> <不喜欢> ?x . }
}

此时结果可能为上述最短路径:

{
	"paths":[{
		"src":"<Francis>",
		"dst":"<Alice>",
		"edges":
		[{"fromNode":4,"toNode":3,"predIRI":"<喜欢>"},{"fromNode":3,"toNode":1,"predIRI":"<喜欢>"},{"fromNode":1,"toNode":0,"predIRI":"<关注>"}],
		"nodes":
		[{"nodeIndex":0,"nodeIRI":"<Alice>"},{"nodeIndex":1,"nodeIRI":"<Bob>"},{"nodeIndex":3,"nodeIRI":"<Carol>"},{"nodeIndex":4,"nodeIRI":"<Francis>"}]
		}]
}

也可能是下图中含有环的、同样满足条件的非最短路径:
在这里插入图片描述

sparql语法 英文
05-09
sparql语法 sparql语法 sparql语法
gStore:Answering SPARQL Queries via Subgraph Matching
loveandstory的博客
09-21 247
2011 gStore: Answering SPARQL Queries via Subgraph Matching 1.存在问题 1)他们无法以可扩展的方式支持带通配符的SPARQL ​ 例如: ​ 我们可以通过以下SPARQL从RDF数据集中检索1809年2月12日出生并于1865年4月15日去世的人的姓名 ​ 我们可能知道一位重要的政治人物于2月12日出生并于4月15日去世,但我们不知道他的确切出生和死亡年份。 在这种情况下,我们必须使用通配符执行查询 ​ 2)现有系统对于存储RDF的数
gStore answering SPARQL queries via subgraph matching
VAOVA的博客
04-05 651
待补充
sparql使用简介-语法入门
minosisterry的博客
11-08 5121
官网翻译版:https://blog.csdn.net/minosisterry/article/details/102613785 基本模式 把查询语句理解成模式匹配,匹配模式即’实例-关系-实例‘的三元组模式匹配,这里的查询都是对实例的 最简单的查询 下面这个?x和“John Smith”都是实例,中间<>内容是关系,意思是查询x,其中x 的 FN(全名) 为 “John ...
SPARQL查询语言概念及语法
buzhidao2333shuosha的博客
10-26 2220
SPARQL 从概念到使用
SPARQL查询语言概述
Deer
04-16 1403
随着大数据概念的飞速发展,海量的数据处理已经成为研究的热点。图数据库技术应运而生,当今较为火热的图数据库软件Neo4j、gStore、AllegroGrap、GraphDB等。Neo4j、gStore这二者分别代表两种不同的类型,Neo4j是以Cypher为查询语言的图数据库代表,底层基于JAVA设计,社区版遵循GPL许可协议,企业版遵循AGPL许可。gStore是以spqrql为查询语言的图数据...
查询流动信息:RDF流的动态处理和自适应增量维护
8430查询流动信息:RDF流的动态处理和自适应增量维护0Xuanxing Yang *0天津大学计算机科学与技术学院 中国天津 tdyxx@tju.edu.cn0摘要0最近,...,已经有人努力扩展RDF和SPARQL以表示流动信息和连续查询功能...
北大邹磊:图数据库中的子图匹配算法
DataFun_Hoh的博客
04-18 5936
本文从图数据库中的核心查询算子——子图匹配入题,介绍了图数据库的基本概念、子图匹配的算法,以及在图数据库环境下的子图匹配查询优化等内容。
WDAqua-core1:用于RDF知识库的问答服务
10870WDAqua-core1:用于RDF知识库的问答服务0Dennis Diefenbach Université deLyon,CNRS UMR 5516Laboratoire HubertCurien,法国圣艾蒂安,dennis.diefenbach@univ-st-etienne.fr0Kamal Singh Universit...
SPARQL 学习网站
wangzhanxidian的博客
08-30 298
dbpedia wikidata zhishi.me 以wikidata为例: # 查询父亲或者母亲是作家的中国作家 SELECT ?child ?childLabel ?fatherLabel ?motherLabel WHERE { ?child wdt:P31 wd:Q5. ?child wdt:P27 wd:Q148. ?child wdt:P106 wd:Q36180. {?child wdt:P22 ?father. ?father wdt:P106 wd:Q361
基于SPARQL的RDF数据节点间关系路径检索
10-21
在分析SPARQL标准和基于Jena的开源SPARQL工具ARQ查询引擎源码的基础上,提出了可支持关联查询的扩展SPARQL标准及其设计和实现方案,认真分析了已有的试验成果。
知识图谱SPARQL的基本语法示例
Puzzle的博客
04-30 8273
前言 SPARQL的英文全称为SPARQL Protocol and RDF Query Language,是为RDF开发的一种查询语言和数据获取协议,它是为W3C所开发的RDF数据模型所定义,但是可以用于任何可以用RDF来表示的信息资源。 从SPARQL的全称我们可以知道,其由两个部分组成:协议和查询语言。 1、查询语言很好理解,就像SQL用于查询关系数据库中的数据,XQuery用于查询XML数据,SPARQL用于查询RDF数据。 2、协议是指我们可...
Sparql学习
baidu_15113429的博客
08-31 511
PREFIX rdf: &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt; PREFIX owl: &lt;http://www.w3.org/2002/07/owl#&gt; PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt; PREFIX xsd: &lt;http://ww...
SPARQL杂记
seabluely
01-05 125
查询语句语法: SELECT DISTINCT * WHERE { ?s rdf:type :student ?s :studentName ?studentname. ?s :provinceid ?provid. FILTER (?provid = 001) FILTER (?score >= 80) }limit 5
#gStore-weekly | gMaster功能详解之数据库查询
最新发布
weixin_48167662的博客
02-21 396
gMaster提供了数据库查询功能。该功能可以对集群中的数据库通过SPARQL进行查询。平台基于Master-Slave架构,内置了基于随机划分和指定划分的4种数据查询分解策略,支持百亿图数据规模下多达六跳的秒级查询。登录gMaster,点击左侧菜单【数据库】下的【图数据库查询】,进入数据库查询页面。在【数据库】下拉框选择要查询的数据库名。在查询SPARQL输入框中输入SPARQL语句,点击【查询】按钮,页面右侧展示查询结果。
#gStore-weekly | gStore常用命令/基本用法之增删改查
weixin_48167662的博客
10-21 264
gStore针对RDF三元组数据增删改查都怎么使用呢,有哪些常用命令和用法,我在使用过程中进行了总结: 1. 新增数据 如何向gStore数据库中插入RDF三元组数据呢,我们可以通过以下几种方式: 使用文件添加:gStore有个gadd命令,用于将文件中的三元组插入现有数据库。使用方法如下: bin/gadd db_namerdf_triple_file_path rdf_triple_file_path指带".nt"或者".n3"后缀的文件路径 使用编写SPARQL语句添加:SPARQL..
sparql入门-中文教程
热门推荐
minosisterry的博客
11-05 1万+
粗糙翻译,供自己学习记录用,有时间再精细化。不明朗之处请对照英文原文理解 简化版:https://blog.csdn.net/minosisterry/article/details/102963985 官网教程链接:http://jena.apache.org/tutorials/sparql_data.html 先给个定义: SPARQL是W3C RDF数据访问工作组设计的用于访问RD...
#gStore-weekly | 高级功能之最短路径查询
weixin_48167662的博客
10-13 168
在三维网格模型上,寻找任意两个顶点间的最短路径是几何模型计算的基本问题也是目前网格模型有意义的分割、机器视觉模式识别等热点研究工作的基础问题。就如乘汽车旅行的人总希望找出到目的地的尽可能的短的行程一样,在实际业务场景中我们通常希望能快速找到两个点之间的关联关系。在图数据结构中,任意两点之间的最短路径的长度称为这两点之间的距离,距离越近代表这两点之间关联关系越大。例如在一张图中对于和存在违法犯罪的人员关系最紧密的人员可评为高风险人员。 在gStore 0.9版本中,gStore加入了与数据图中结点间的...
Sparql 用法
Web3 & Basketball
10-30 1335
并集查询: SELECT * WHERE { {?sub ?pred ?obj} filter(regex(str(?obj), "赵云")) filter(?pred=&lt;http://www.taobao/ontology/name&gt;) } 全集查询:union SELECT * WHERE { {{?sub ?pred ?obj} filter(regex(...
写文章

热门文章

  • LangChain学习一:入门-本地化部署-接入大模型 12288
  • 本地化部署大模型方案二:fastchat+llm(vllm) 10479
  • Python学习十二:Flask框架 9794
  • 安装完Cent OS 7.3 重启后出现“4m[terminated] 8459
  • 通义千问部署搭建 7661

分类专栏

  • Freeswitch-实战分析 6篇
  • freeSwith 26篇
  • 大模型 1篇
  • LangChain学习专栏 6篇
  • 音频开发 2篇
  • 技巧 30篇
  • Python 16篇
  • 机器学习 3篇
  • 算法题 7篇
  • Android学习 1篇
  • Mysql集群 6篇
  • gStore 9篇
  • docker 13篇
  • SpringCloud 11篇
  • nginx 8篇
  • redis 15篇
  • Gradle 1篇
  • shiro 4篇
  • linux操作系统 24篇
  • git 3篇
  • Springboot整合系列 4篇
  • springboot+jsp 2篇
  • LUA安卓脚本 3篇
  • VUE 4篇
  • javaSE内容 38篇
  • java-web 29篇
  • servlet交互 6篇
  • JSON交互 1篇
  • Vue前端学习 3篇
  • Spring框架学习 18篇
  • Mybatis框架学习 14篇
  • java的系列问题 8篇
  • 网络攻防 3篇

最新评论

  • FunASR语音识别(解决-高并发线程问题)

    HAH-M: 这个代码在并行执行多个语音转写任务时是不是会有报错?

  • 1-FreeSwitch-CentOS7安装freeswitch1.10.2

    代码浪人: 不是在上面吗。

  • 1-FreeSwitch-CentOS7安装freeswitch1.10.2

    2301_79918008: 老哥有联系方式吗,有问题请教

  • whisper深入-语者分离

    gogogozz: 你好作者,ecapa-tdnn可以实现这种效果吗

  • LangChain学习一:入门-本地化部署-接入大模型

    SlElE486: 我想请问一下,本地的大模型在通过这种实例化ChatOpenAI无法调用工具怎么解决,

最新文章

  • 创建一个SpringBoot项目
  • Freeswitch-soundtouch-变声开发
  • Freeswitch-Python3开发
2024年10篇
2023年23篇
2022年39篇
2021年154篇
2020年110篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家湖北玻璃钢雕塑价位商场美陈时尚女郎雕塑爆款玻璃钢雕塑玻璃钢卡通雕塑制造南昌现代人物玻璃钢雕塑焦作玻璃钢卡通雕塑厂家销售玻璃钢雕塑家园共育邵阳吉首玻璃钢雕塑报价玻璃钢人物雕塑找哪家佛山玻璃钢景观雕塑规格商场dp点美陈图片官渡区玻璃钢雕塑造型厂家河南玻璃钢人物铜雕塑定制厂家河南商场玻璃钢雕塑摆件厦门玻璃钢抽象雕塑武汉护栏玻璃钢花盆福建超市商场美陈哪家好贵州农耕文化玻璃钢人物雕塑南京玻璃钢雕塑供货商兰州玻璃钢历史雕塑厂家成都玻璃钢雕塑厂哪家好成都人物玻璃钢雕塑生产厂家周口景观园林玻璃钢仿铜雕塑绍兴常用商场美陈日照商场开业美陈中庭商场美陈销售公司梁平县玻璃钢雕塑建安玻璃钢雕塑加工厂家玻璃钢雕塑的时间揭阳玻璃钢动物雕塑生产香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化