写点什么

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:404388
用户头像

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

关注

评论

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

京东拍立淘图片搜索API接口指南

tbapi

京东API 京东图片搜索接口 京东拍立淘接口

破局传统采购!采购文件编制审核系统为烟草行业数智化加速

中烟创新

鸿蒙5开发宝藏案例分享---一多分栏开发实践

莓创技术

鸿蒙5开发宝藏案例分享---折叠屏悬停态开发实践

莓创技术

ShadowSql之表达式树

电子尖叫食人鱼

数据库 sql

Cisco Nexus 9000v Switch, NX-OS Release 10.5(3)F | 10.4(5)M

sysin

nexus

天翼云HBlock重磅发布快照克隆功能

科技热闻

NocoBase 本周更新汇总:优化及缺陷修复

NocoBase

开源 低代码 零代码 无代码 版本更新

怎么选择合适的高防IP

网络安全服务

CDN 服务器 宽带 高防IP DDoS 攻击

AI招聘APP的主要功能

北京木奇移动技术有限公司

AI应用 AI招聘 软件外包公司

科学智能赋能空间科学研究(1):中国空间站空间科学实验的数据生态构建

ModelWhale

大模型 科学智能 AI4S 空间科学

二级域名怎么申请?二级域名申请费免费吗?

防火墙后吃泡面

2025 BOE(京东方)全球供应伙伴大会隆重举行 共筑全球显示产业共生共赢新格局

爱极客侠

Windows Server 2025 中文版、英文版下载 (2025 年 5 月更新)

sysin

Windows Server

Sentieon 项目文章 | 社区努力识别和纠正蛋白质基因组研究中标签错误的样本

INSVAST

蛋白质 多组学 Sentieon 变异分析 生信分析服务

Windows Server 2022 中文版、英文版下载 (2025 年 5 月更新)

sysin

Windows Server

Oracle Linux 9.6 正式版发布 - Oracle 提供支持 RHEL 兼容发行版

sysin

oracle

贡献 OpenHarmony 库关键配置

飞龙AI

OpenHarmony HarmonyOS NEXT 自研框架

阿里云人工智能平台PAI开源EasyDistill框架助力大语言模型轻松瘦身

阿里云大数据AI技术

数据分析 #开源 #大模型 #大数据 PAI

Windows 11 23H2 中文版、英文版 (x64、ARM64) 下载 (2025 年 5 月更新)

sysin

windows 11

杂七杂八系列----浅谈.NET微服务架构的演变

秃头小帅oi

一文掌握 browser-use:基于 DeepSeek 的浏览器自动化实战

测试人

人工智能 软件测试

人工智能浪潮下,制造企业如何借力DeepSeek实现数字化转型?

万界星空科技

人工智能 数字化转型 制造业 mes DeepSeek

鸿蒙5开发宝藏案例分享---一多断点开发实践

莓创技术

iVX 安全架构技术白皮书

代码制造者

鸿蒙5开发宝藏案例分享---一多分级导航栏开发实践

莓创技术

鸿蒙5开发宝藏案例分享---Web适配一多开发实践

莓创技术

Windows 11 24H2 中文版、英文版 (x64、ARM64) 下载 (2025 年 5 月更新)

sysin

windows 11

动态判断:如何用"群体智慧"优化AI数据标注流程?

澳鹏Appen

动态判断 dynamic judgements

鸿蒙5开发宝藏案例分享---一多交互事件开发实践

莓创技术

鸿蒙5开发宝藏案例分享---一多窗口适配开发实践

莓创技术

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