图数据库查询语言Cypher、Gremlin和SPARQL_王KV的博客-CSDN博客


本站和网页 https://blog.csdn.net/fengqiyunluo/article/details/81409766 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

图数据库查询语言Cypher、Gremlin和SPARQL_王KV的博客-CSDN博客
图数据库查询语言Cypher、Gremlin和SPARQL
王KV
于 2018-08-04 12:43:14 发布
3637
收藏
分类专栏:
graghdb
文章标签:
graghdb
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fengqiyunluo/article/details/81409766
版权
graghdb
专栏收录该内容
1 篇文章
0 订阅
订阅专栏
学习:https://blog.csdn.net/wzwdcld/article/details/80783782
首先需要区分清除的概念:图数据库、图查询语言。
图数据库:以图的形式组织和存储数据 图数据库是一种用于用于语义检索的使用图结构包括节点、边和属性来表示和存储数据的数据库。其中的关键概念是图,其直接关联了被存储的数据项。这种关联关系允许数据被直接关联,在很多情况下只需要一步操作就可以抽取出来。 传统关系数据库,管理数据的时候可以不需要实现物理记录链。例如,数据之间的链接被保存在逻辑层,关联操作可以把数据组织起来。
In computing, a graph database (GDB[1]) is a database that uses graph structures for semantic queries with nodes, edges and properties to represent and store data. A key concept of the system is the graph (or edge or relationship), which directly relates data items in the store. The relationships allow data in the store to be linked together directly, and in many cases retrieved with one operation. This contrasts with relational databases that, with the aid of relational database management systems, permit managing the data without imposing implementation aspects like physical record chains; for example, links between data are stored in the database itself at the logical level, and relational algebra operations (e.g. join) can be used to manipulate and return related data in the relevant logical format. The execution of relational queries is possible with the aid of the database management systems at the physical level (e.g. using indexes), which permits boosting performance without modifying the logical structure of the database.https://en.wikipedia.org/wiki/Graph_database
图数据库一个典型的应用场景是知识图谱,知识图谱可以简单的理解为对实体关系的描述,使用图数据库来存储比传统使用SQL要快好多倍。SQL中复杂的关联关系需要多次join操作,不够高效。
知识图谱 https://zhuanlan.zhihu.com/p/38891715
图查询语言: 和图数据库交互的查询语言,
SQL:数据以表形式存在,有比较强的schema定义,表间的数据关联以联接(join)的方式实现。这是一种事实标准,大部分人都想把其它问题也转换回SQL或类SQL的方式上来。
SPARQL:面向RDF(Resource Description Framework)的三元组数据,W3C标准,无schema,在研究中应用非常广泛。SPARQL的查询与RDF是一致的,RDF是图,SPARQL查询是子图匹配。
Gremlin:数据以属性图的形式存在,可以认为是上面两种的混合体,属性仍然在表中,但是联接关系是直接以链接(比如指针)的形式存在的。查询的本质是图遍历,擅长解决求图的直径、点到点之间的路径,比如刘德华连接奥巴马需要几度关系。
Cypher: Neoj4数据库使用的图查询语言
1、SQL的问题: 这里涉及到一个问题,属性值并不总是单一值(List),而SQL表是有这个假设的(比如MySQL,PostgreSQL是有Array类型的)。针对每一个多值属性都需要进行额外拆表,这对表的管理带来了巨大挑战。查询时频繁地进行多表联接对数据库性能也是个挑战。另外,也可以直接在关系型数据库中存储三元组,但是查询效率并不高。
2、SPARQL: Free Schema的方式,在使用Gremlin时可能需要创建的很多表,造成使用不便,效率低下,可以考虑这种方式,例如知识图谱的应用场景
Gremlin使用介绍:http://tinkerpop.apache.org/(包括了其他图查询产品的信息)
1、查询gremlin的朋友的朋友的姓名,查询很直观:通过has 选择gremlin,out表示关系朋友,因为两层关系,所以有两个,values表示返回的结果属性
// What are the names of Gremlin's friends' friends?
g.V().has("name","gremlin").
out("knows").out("knows").values("name")
2、由两个人创建的项目,且这两个人是朋友,可以理解为子图匹配的过程:match操作描述了子图的特征,select选择子图顶点,by选择返回的结果,as应该是类似sql的as,in表示入度,count表示个数,is判断个数为2
// What are the names of projects that were created by two friends?
g.V().match(
as("a").out("knows").as("b"),
as("a").out("created").as("c"),
as("b").out("created").as("c"),
as("c").in("created").count().is(2)).
select("c").by("name")
3、gremlin到ceo,路径上的人名:has,根据name选择 gremlin,repeat util,重复查找入度关系为manage,也就是查找上级顶点,直到顶点的tile为ceo,path返回访问的路径,by选择返回的属性
// What are the names of the managers in
// the management chain going from Gremlin to the CEO?
g.V().has("name","gremlin").
repeat(in("manages")).until(has("title","ceo")).
path().by("name")
4、Gremli的合作者的职位名称的分布:has选择gremlin,as方便下文引用,out根据create关系找到其创办的项目,in选择创办该项目的人,where neq排除a,groupCount分组计算,by指定了分组计算的属性,返回的结果应该是tile:count
// What is the distribution of job titles amongst Gremlin's collaborators?
g.V().has("name","gremlin").as("a").
out("created").in("created").
where(neq("a")).
groupCount().by("title")
5、给出他的购买历史,找出和gremlin最相关的产品的排名:has选择gremlin,out选择买的产品节点,aggregate聚合之前购买的商品,in选择购买这些商品的用户,out选择这些用户购买的商品,where排除掉已经股买的商品,也就是刚才聚合的结果stach,然后分组计算,本地排序,根据根据values应该指的是个数??
// Get a ranking of the most relevant products for Gremlin given his purchase history.
g.V().has("name","gremlin").out("bought").aggregate("stash").
in("bought").out("bought").
where(not(within("stash"))).
groupCount().
order(local).by(values,desc)
王KV
关注
关注
点赞
收藏
打赏
评论
图数据库查询语言Cypher、Gremlin和SPARQL
学习:https://blog.csdn.net/wzwdcld/article/details/80783782首先需要区分清除的概念:图数据库、图查询语言。图数据库:以图的形式组织和存储数据 图数据库是一种用于用于语义检索的使用图结构包括节点、边和属性来表示和存储数据的数据库。其中的关键概念是图,其直接关联了被存储的数据项。这种关联关系允许数据被直接关联,在很多情况下只需要一...
复制链接
扫一扫
专栏目录
一文了解各大数据库查询语言(Gremlin vs Cypher vs nGQL操作篇
架构大数据双料架构师的博客
08-05
911
文章的开头我们先来看下什么是图数据库,根据维基百科的定义:图数据库是使用图结构进行语义查询的数据库,它使用节点、边和属性来表示和存储数据。
虽然和关系型数据库存储的结构不同(关系型数据库为表结构,图数据库为图结构),但不计各自的性能问题,关系型数据库可以通过递归查询或者组合其他 SQL 语句(Join)完成图查询语言查询节点关系操作。得益于 1987 年 SQL 成为国际标准化组织(ISO)标准,关系型数据库行业得到了很好的发展。同 60、70 年代的关系型数据库类似,图数据库这个领域的查询语言目前也没有
知识图谱:【图数据库Neo4j(四)】——Neo4j查询语言CQL
u013010473的博客
10-24
749
文章目录Cypher简介实体/关系表示实体/关系创建实体/关系查询实体/关系删除实体修改最短路径查询CQL子句CQL函数参考链接
Cypher简介
Cypher查询语言,即CQL,是Neo4j图形数据库的查询语言。
实体/关系表示
实体表示:表示一个id值为“person1”的Person类型的实体,并记其名字为a
(a:Person {id:"person1"})
关系表示:表示一个actor关系,并记其名字为r
[r:actor]
实体/关系创建
实体创建:
CREATE(:Person {id:"
参与评论
您还未登录,请先
登录
后发表或查看评论
neo4j图创建和图查询语句实战——一阶二阶查询、复合查询、增删改查...
最新发布
甘如荠
10-09
528
neo4j的图查询语句实例。节点创建、关系创建、属性创建、图查询、多条件复合查询等
图数据库-Neo4j介绍与Cypher入门
热门推荐
活的洒脱怪我咯的专栏
08-14
2万+
1、简介
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上形成图谱而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性,如:事务,索引等。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。
在一个图中包含两种基本的数据类型:Nodes(节点
图数据库初探——1. 选择一个合适的图数据库
Castlehe的博客
11-29
3485
1. 图数据库概览
Tips:
不了解一个领域的时候,先去找找这个领域的白皮书。
想做一个知识图谱,需要调研一下图数据库,就直接去找这方面的白皮书。相对权威但是不是非常实时的内容
或者直接搜索 知识图谱 图数据库 对比。不那么权威但是相对实时的内容,另外有人使用说明这个东西比较实在。
结合一下,得到的结果应该就比较靠谱了
白皮书:
知识图谱标准化白皮书(2019)
搜索博客文章:
✅图数据库排名、对比
知识图谱简介及常用图数据库Neo4j vs OrientDB
【持续更新】知识图谱相关工具平台整理
图数据库(五):Neo4j中Cypher语言查询操作
Hanscal
04-05
629
查询节点match
match(d:Disease) return d
条件查询
match(d:Disease {oid: "xxx1"}) return d
返回Return
return 的作用是在match匹配上了以后,选择哪些返回,如果能确定返回的属性,尽量不要全部返回!如果没有匹配上,则没有任何信息返回。
Return的语法很简单,需要什么就返回什么,*表示返回所有的。
MATCH p =(a { name: 'A' })-[r]->(b) RETURN * # 返回
Gremlin vs Cypher vs nGQL
glowd的专栏
09-14
257
图数据库是使用图结构进行语义查询的数据库,它使用节点、边和属性来表示和存储数据。
虽然和关系型数据库存储的结构不同(关系型数据库为表结构,图数据库为图结构),但不计各自的性能问题,关系型数据库可以通过递归查询或者组合其他 SQL 语句(Join)完成图查询语言查询节点关系操作。得益于 1987 年 SQL 成为国际标准化组织(ISO)标准,关系型数据库行业得到了很好的发展。同 60、70 年代的关系型数据库类似,图数据库这个领域的查询语言目前也没有统一标准,虽然 19 年 9 月经过国际 SQL 标准委员会
图数据库查询语言Cypher
创邻科技
08-10
2594
1. Cypher 简介
Cypher 是 Neo4j 提出的图查询语言,是一种声明式的图数据库查询语言,它拥有精简的语法和强大的表现力,能够精准且高效地对图数据进行查询和更新。它是一种受 SQL 启发的语言,用于使用 ASCII-Art 语法描述图中的可视模式。它允许声明想要从图数据库中选择、插入、更新或删除什么,而不需要精确地描述如何做到这一点。通过 Cypher,用户可以构建表达性强且高效的查询,处理所需的创建、读取、更新和删除功能。
1.1 Cypher 设计理念
Cypher 的设计理念是:无论是
图数据语句(Gremlin和Cypher)解决两个点到同一点的问题
alim2012的博客
07-15
181
两个点到同一点的问题用Cypher可以写成。如下图所示的关系,其中name是唯一的。
SparQL查询语法
大致若愚的博客
02-28
971
sparQL语法相关
图查询语言——Gremlin
chenxy02的博客
07-06
1982
参考:https://blog.csdn.net/CSDN___LYY/article/details/84771820
背景:
目前图数据库领域最主流的两种查询语言为Cypher 和 Gremlin。Cypher是数据库Neo4j中实现的属性图数据查询语言。与SPARQL一样,Cypher也是一种声明式语言,即用户只需要声明“查什么”,而无须关心“怎么查”。
Gremlin是ApacheTinkerPop图计算框架提供的属性图查询语言。Apache TinkerPop被设计为访问图数据库...
知识图谱:【图数据库Nebula(七)】——Nebula查询语言nGQL
u013010473的博客
10-24
3624
文章目录nGQL简介图模式单点模式多点关联模式Tag模式属性模式边模式变长模式路径变量索引创建检索操作检索点或边的信息检索点ID检索点Tag检索点或边的单个属性检索点或边的所有属性检索Edge type检索路径引用符引用符列表:引用符示例:MATCH匹配点匹配Tag匹配点的属性匹配点ID匹配连接的点匹配路径匹配边匹配Edge type匹配边的属性匹配定长路径匹配变长路径LOOKUP检索点检索边通过Tag列出所有的对应的点/通过Edge type列出边查找所有Tag为player的点 VID:查找Edge t
SPARQL查询语句详解(不懂的可以楼下评论,看到秒回)
zycxnanwang的博客
11-17
2730
SPARQL
简单家庭关联网络(知识图谱)
用rdf描述这个网络
<rdf:RDF
xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
xmlns:info='http://zy.example.com/info#'
xmlns:rel='http://zy.example.com/rel#'>
<r...
Neo4j学习(3):操作图数据库的语言--Cypher
小树学信奥
08-29
1446
Cypher是一种用来处理图数据库的语言,语法比较简单。
1 查询数据库里的数据
match(n) return n
match是匹配规则,(n)表示所有节点,语法要求加上小括号。
return n表示返回匹配到的所有节点
刚安装完,数据库里没有数据。所以显示“no records”。
2 创建一个节点
CREATE (p1:Person { name: "Liu Da"...
sparql常用查询语句总结
RoseBrook
02-28
1万+
1 isql 命令ttl数据导入
DB.DBA.TTLP_MT(file_to_string_output('/usr/local/share/virtuoso/data/testly2.ttl'),'','http://test2.com');
2 virtuoso导入的图数据删除
SPARQL CLEAR GRAPH <http://test2.com>;
3为操作...
[对应示例]λ-算子、λ-DCS、SPARQL、Cypher
weixin_38100489的博客
06-03
194
举例:people who had children born in Seattle 对应的
λ-算子:
λx.∃y.Chilren( x , y ) ∧ PlaceOfBirth( y , Seattle )
λ-DCS:
Chilren.PlaceOfBirth.Seattle
SPARQL:
prefix ns: <神马神马>
select ?s1
where {
?s1 ns: Chilren ?s2,
?s2 ns: PlaceOfBirth
mysql支持sparql吗_hugegraph 支持sparql 与cypher
weixin_39566914的博客
02-05
97
hugegraph 是百度开源的基于tinkerpop的图数据库,支持通过gremlin进行查询。这里,我们来扩展支持sparql 与cypher。sparql支持github上有SparqlToGremlinCompiler,可以支持将sparql转GraphTraversal,集成该工具库即可:@Path("graphs/{graph}/sparql")@Singletonpublic cla...
【Semantic Web】从G. Antoniou等人视角看语义网(五)查询语义网:SPARQL
qq_28869927的博客
07-12
1058
概述
当网络上的信息被表示为RDF后,可以利用SPARQL查询语言来存取其中的相关部分,以达到推理和应用的需求。SPARQL是专门为RDF设计的。
执行SPARQL的软件基础
以RDF描述的资源被存储在一个名为三元组存储库(triple store)的地方,每个三元组存储库都提供一个端点(endpoint)来提交SPARQL查询。端点本质上是一个地址,客户端通过HTTP协议来向端点发...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
王KV
CSDN认证博客专家
CSDN认证企业博客
码龄11年
暂无认证
27
原创
27万+
周排名
175万+
总排名
4万+
访问
等级
735
积分
粉丝
获赞
评论
20
收藏
私信
关注
热门文章
【阅读】ShuffleNet和MobileNetv1, v2
4390
【笔记】机器学习里的各种LOSS(L1,L2)
4332
图数据库查询语言Cypher、Gremlin和SPARQL
3637
地理位置坐标计算
2556
Spark Streaming、Storm、Flink比较
2520
分类专栏
Android
2篇
Web
1篇
微服务
1篇
强化学习
1篇
吐槽
3篇
深度学习
3篇
目标检测
1篇
阅读
2篇
网络结构
2篇
资源福利
1篇
笔记
2篇
机器学习
2篇
loss
Leetcode
1篇
react
1篇
idea
1篇
hive
2篇
sql
1篇
java
2篇
graghdb
1篇
ocr
1篇
hbase
1篇
大数据
1篇
bloom filter
1篇
Go
1篇
前端
1篇
nlp
最新评论
【阅读】目标识别算法目录
funian788:
大兄弟你这目录好像没链接啊...
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
brew 安装指定版本的package
Google技术评分卡
什么是magic number
2022年1篇
2021年1篇
2020年1篇
2019年2篇
2018年29篇
2017年8篇
2013年2篇
目录
目录
分类专栏
Android
2篇
Web
1篇
微服务
1篇
强化学习
1篇
吐槽
3篇
深度学习
3篇
目标检测
1篇
阅读
2篇
网络结构
2篇
资源福利
1篇
笔记
2篇
机器学习
2篇
loss
Leetcode
1篇
react
1篇
idea
1篇
hive
2篇
sql
1篇
java
2篇
graghdb
1篇
ocr
1篇
hbase
1篇
大数据
1篇
bloom filter
1篇
Go
1篇
前端
1篇
nlp
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
王KV
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值