AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

Gremlin,一门操作图表的语言

  • 2010-01-17
  • 本文字数:1344 字

    阅读完需:约 4 分钟

Gremlin 是操作图表的一个非常有用的图灵完备的编程语言。它是一种Java DSL 语言,对图表进行查询、分析和操作时使用了大量的XPath。

Gremlin 可用于创建多关系图表。因为图表、顶点和边的元素含有由键值对定义的属性,所以图表被称之为属性图表,以下是一个示例:

它包含以下类型:

  • 图表:图表是由一组顶点和一组边构成的。
  • 顶点:顶点由一组出边(从顶点指出的边),入边(指向顶点的边),和属性表组成。
  • :边由出点,入点和属性表组成。
  • 布尔型:布尔型有 true 和 false。
  • 数字型:数字型可以是整数 (integer) 也可以是实数(double)。
  • 字符型:字符型是字符串数组。
  • 列表型:列表是一个有序可重复的对象集合。
  • map 型:map 是一个从一组键值对象到一组值对象的关联数组

除了 XPath 的数学计算(加,减,乘)之外,Gremlin 还提供了很多语句,如If/Else,While,Repeat,Foreach 以及其他。

Gremlin 可用于任何实现了通用图表模型(General Graph Model)的框架。该模型包括一系列组件(如图、元素、顶点、边和索引)以及相应的Java 接口,欲使用Gremlin 结构来操作图片,则需要实现这些接口。

使用Gremlin 操作图片的一个例子存在于 MongoDB 文档中。另一个是与资源描述框架(Resource Description Framework)存储一起用于 OpenRDF , AllegroGraph , Open Virtuoso 或者 Neo4j 等图数据库中。将来,Gremlin 团队将有意添加对 CouchDB 和 Terracotta 的支持。

示例

要理解 JSON 编码的图片,你就需要使用以下模式(schema)来描述顶点和边。

复制代码
object {
string "_id";
array { string } inEdges;
array { string } outEdges;
object { }* properties;
};
复制代码
object {
string "_id";
string label;
string inVertex;
string outVertex;
object { }* properties;
};

然后,上述图片在用 JSON 编码后如下所示:

复制代码
//// VERTEX COLLECTION ////
{
_id: "1",
properties: {
name : "marko",
age : 29 },
outEdges : ["7","8","9"]
}
{
_id: "2",
properties: {
name : "vadas",
age : 27
},
inEdges : ["7"]
} ... [section skipped for brevity]
//// EDGE COLLECTION ////
{
_id: "12",
label: "created",
properties: { weight : 0.2 },
outVertex : "6",
inVertex : "3"
}

该数据存储到 MongoDB 时,数据库将创建两个集合,一个顶点集合,一个边集合,Gremlin 允许你通过通用图表模型接口操作这些集合,如添加 / 删除顶点或边,获取顶点或边的集合,获取 / 设置顶点或边的属性,通过查找顶点所关联的边或者查找边所关联的顶点在图片上导航。

向一个图片添加两个顶点并将它们通过边连接起来的动作称之为“related_to”,它是这么实现的:

复制代码
gremlin> $v := g:add-v($g) ==>v[0]
gremlin> $u := g:add-v($g) ==>v[1]
gremlin> $e := g:add-e($g, $v, 'related_to', $u) ==>e[2][0-related_to->1]

在电脑芯片设计,生物学,网络学等方面有相当多的图表应用。一个简单的例子是创建这样一个图,顶点表示网站中的网页,而边表示页面指向另一个页面的链接。在 Gremlin 中你可以对这样的页面图表进行更改和编辑其属性。

资源: TinkerGraph ——通用图表模型的参考实现, Gremlin 文档 Gremlin 用户组.


查看英文原文: Gremlin, a Language for Working with Graphs

2010-01-17 23:404243
用户头像

发布了 184 篇内容, 共 85.5 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

微服务架构革新:百度Jarvis2.0与云原生技术的力量

百度Geek说

微服务架构 企业号2024年7月PK榜 百度商业产品矩阵 Jarvis应用托管平台

基于Java+SpringBoot+Vue前后端分离计算机学院校友网设计和实现

hunter_coder

后端开发

蝉联“第一”背后,是vivo的“快乐飞轮”正循环

脑极体

终端

怎样在touchbar养电子宠物? Touch bar pet for Mac 在macbook上养一只宠物

Rose

MacBook 电子宠物 touchbar

macOS Catalina for mac (macos 10.15系统)v10.15.7正式版

Rose

Autodesk AutoCAD 2024 Mac破解补丁版 cad2024中文安装教程 兼容m芯

Rose

Apple Intelligence将在今年10月推出?AI毛绒玩具BubblePal回答人类幼崽十万个为什么!|AI日报

可信AI进展

人工智能

React 的 KeepAlive 实战指南:深度解析组件缓存机制

袋鼠云数栈

前端 技术人 UED keepalive keep-alive实现原理

基于Java+SpringBoot+Vue前后端分离教师工作量管理系统设计和实现

hunter_coder

后端开发

基于Java+SpringBoot+Vue前后端分离教师工作量计算系统设计和实现

hunter_coder

后端开发

基于Java+SpringBoot+Vue前后端分离疾病防控综合系统设计和实现

hunter_coder

后端开发

(图片不缺失)深入淘宝商品详情:利用taobao.item_get_desc API挖掘商品标题与描述

代码忍者

API 文档 API 测试 pinduoduo API

B端常用交互方式的量化及优化实践和指引|得物技术

得物技术

web前端 交互 企业号2024年7月PK榜

跨平台的SSH、Telnet和SFTP客户端Termius for Mac v8.4.0直装激活版

Rose

Termius for Mac破解

文献解读-遗传病-第二十五期|《通过贝叶斯和单倍型预测胎儿基因型进行单基因病的无创产前诊断》

INSVAST

基因测序 基因数据分析 生信服务 遗传病测序 遗传病

谷歌新AI模型在国际奥数竞赛达到银牌标准!OpenAI推出AI搜索引擎SearchGPT挑战谷歌!|AI日报

可信AI进展

人工智能

基于Java+SpringBoot+Vue前后端分离教学资料管理系统设计和实现

hunter_coder

后端开发

基于Java+SpringBoot+Vue前后端分离机动车号牌管理系统设计和实现

hunter_coder

后端开发

霍尼韦尔:AI在工业领域的应用方兴未艾 不断发现新的应用场景

财见

小间距LED显示屏:引领显示技术新潮流

Dylan

技术优势 LED显示屏 全彩LED显示屏 led显示屏厂家 市场

JProfiler for Mac(Java开发分析软件) JProfiler

Rose

Java 开发 JProfiler 14下载 JProfiler 14破解版

macos big sur 软件icons图标大全(新增至2719枚大苏尔风格图标)

Rose

基于Java+SpringBoot+vue前后端分离技术交流和分享平台设计实现

hunter_coder

后端开发

2024 ChinaJoy,火山引擎以AI大模型为动能推进游戏玩法创新

新消费日报

macOS Sonoma 14.6 (23G80) 正式版发布,ISO、IPSW、PKG 下载

sysin

macos Sonoma

Autodesk AutoCAD2020(附安装教程图解) 激活特别版 mac/win

Rose

AutoCAD2022序列号 autocad2022秘钥

Gremlin,一门操作图表的语言_Java_Abel Avram_InfoQ精选文章