速来报名!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:403971
用户头像

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

关注

评论

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

“00后”整顿职场,终于轮到网安圈了

脑极体

数据湖

为什么自动化测试要分层

老张

自动化测试

支持向量机(SVM)

小魏写代码

IoTLink版本更新V1.43.0 新增部分ERP功能:销售合同 库存管理

山东云则信息科技

物联网

视频剪辑中生成花字特效的代码案例详述

阿里云CloudImagine

云计算 阿里云 视频云

轻量应用服务器,助力个人开发者最低成本创业

YG科技

蓝易云:linux搭建sftp服务器教程!

百度搜索:蓝易云

云计算 Linux 运维 云服务器 sftp

苹果电脑专业图表绘制推荐OmniGraffle Pro 正式版激活中文

胖墩儿不胖y

Mac软件 绘图软件 绘图工具

PDF 批量处理软件 BatchOutput PDF激活最新版

mac大玩家j

PDF Mac软件 pdf处理工具

Mac版本After Effects 2023怎么切换中英文UI界面

展初云

教程 Mac软件 After Effects

私藏管理秘诀帮你打造高绩效团队

敏捷开发

团队管理 项目管理 Scrum 敏捷开发 高绩效团队

工业自动化:国内外常用工业组态软件

2D3D前端可视化开发

物联网 工业自动化 工业控制系统 工业组态软件 组态工具

HarmonyOS CPU与I/O密集型任务开发指导

HarmonyOS开发者

HarmonyOS

英伟达,不能只做孤独的胜利者

自象限

人工智能核心基础 - 规划和概要

茶桁

人工智能 机器学习 深度学习 CNN RNN

蓝易云:Linux 命令 - cat 和 tail

百度搜索:蓝易云

云计算 Linux 运维 cat tail

英文版Premiere Pro怎么切换成中文?「Mac篇」

展初云

教程分享 Mac软件 Premiere Pro

一文了解常见的Python爬虫框架Scrapy

TiAmo

python 爬虫 Scrapy

别学提示词:42类法大师 - 万字精华浓缩

豆哥

ChatGPT 提示词

华秋供应链,让硬科技创业更简单

华秋电子

创业

OpenHarmony自定义构建函数:@Builder装饰器

OpenHarmony开发者

OpenHarmony

数字中国下西洋,需要一支怎样的船队?

白洞计划

AI 网易 风控

华为云API Explorer重磅推出API编排,开发者0代码高效构建工作流(体验用户招募中)

华为云PaaS服务小智

云计算 软件开发 华为云

2023中国智能产业高峰论坛丨文档图像大模型的思考与探索

热爱编程的小白白

Triband QCN9024 work with IPQ6010-IPQ8072 - achieve higher speed bandwidth, more available channels

wifi6-yiyi

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