修改密码

请输入密码
请输入密码 请输入8-64长度密码 和 email 地址不相同 至少包括数字、大写字母、小写字母、半角符号中的 3 个
请输入密码
提交

修改昵称

当前昵称:
提交

申请证书

证书详情

Please complete this required field.

  • Ultipa Graph V4

Standalone

Please complete this required field.

Please complete this required field.

服务器的MAC地址

Please complete this required field.

Please complete this required field.

取消
申请
ID
产品
状态
核数
申请天数
审批时间
过期时间
MAC地址
申请理由
审核信息
关闭
基础信息
  • 用户昵称:
  • 手机号:
  • 公司名称:
  • 公司邮箱:
  • 地区:
  • 语言:
修改密码
申请证书

当前未申请证书.

申请证书
Certificate Issued at Valid until Serial No. File
Serial No. Valid until File

Not having one? Apply now! >>>

ProductName CreateTime ID Price File
ProductName CreateTime ID Price File

No Invoice

v4.5
搜索
    v4.5

      图数据

      本文介绍图数据的基本构成,以及如何使用UQL描述和表达图数据,这些概念是学习和掌握嬴图产品的前提。

      图数据

      图一:Areith works as Waiter

      图一中用圆圈表示的Areith和Waiter是点(Node)。点表示真实世界中的实体。

      图一中带箭头的workAs是一条边(Edge),由Areith指向Waiter。边表示实体之间的关系。

      Schema

      图一中代码里出现的Person、Job和workAs是Schema(模式)。Schema表示点、边的不同类型。

      属性

      图一中代码里出现的name和title是属性(Property)。属性是Schema的组成部分,用来具体描述Schema的特征。

      路径

      图二:三种点Schema和两种边Schema

      图二中由Areith、workAs、Waiter所形成的连续且点、边交替出现的序列是一条路径(Path)。同理,由Waiter、workAs、Areith、studyAt、Oxford构成的序列也是一条路径。

      路径以点开始、以点结束,包含至少一条边。路径表达了实体之间的多步关联关系,也是图计算中经常出现的查询目标。

      描述点

      图三:点的描述

      很多UQL参数都可以描述点,以n()为例:

      n()									// 任何点
      n({@Student})						// Schema为Student的点
      n({name == "Jason"})				// 属性name为Jason的点
      n({@Student.name == "Jason"})		// Schema为Student且属性name为Jason的点
      n(as a)								// 任何点,并命名为a
      n({@Student} as a)					// ...
      ...
      

      以上描述的语法特征:

      • n()内不含花括号{}{}内为空时,表示对点没有过滤条件
      • 过滤点的Schema时使用@符号
      • 点的Schema和属性可以分开描述,也可以联合描述,联合描述时使用.符号连接
      • 给满足要求的点定义别名时使用关键词as,且位于{}(如有)之后

      UQL中可以用来描述点的参数有:

      • nodes():用于点的查找、更新和删除
      • n():用于模板路径查询,表示路径中的某个点
      • nf():用于模板路径查询,表示路径中多个连续的点
      • src():用于一般的路径查询,表示路径起点
      • dest():用于一般的路径查询,表示路径终点
      • node_filter():用于一般的路径查询,表示除src()dest()外的所有点

      描述边

      图四:边的描述

      e()为例说明如何对边进行描述:

      e()									// 任何边
      e({@workAs})						// Schema为workAs的边
      e({since == 2012})					// 属性since为2012的边
      e({@workAs.since == 2012})			// Schema为workAs且属性since为2012的边
      e(as b)								// 任何一条边,并命名为b
      e({@workAs} as b)					// ...
      ...
      

      n()类似,使用参数e()对边进行描述时有以下特征:

      • e()内不含花括号{}{}内为空时,表示对边没有过滤条件
      • 过滤边的Schema时使用@符号
      • 边的Schema和属性可以分开描述,也可以联合描述,联合描述时使用.符号连接
      • 给满足要求的边定义别名时使用关键词as,且位于{}(如有)之后

      UQL中可以用来描述边的参数有:

      • edges():用于边的查找、更新和删除
      • e():用于模板路径查询,表示路径中的某条或多条连续的边
      • le():用于模板路径查询,类似于e()但规定方向为左
      • re():用于模板路径查询,类似于e()但规定方向为右
      • edge_filter():用于一般的路径查询,表示所有边

      描述路径(模板)

      图五:路径的描述

      使用n()e()组合描述的路径称为模板:

      // 任意一步路径
      n().e().n()
      
      // 任意两步路径
      n().e().n().e().n()
      n().e()[2].n()
      
      // 由@Person-@workAs-@waiter点边组成的一步路径
      // 为其中的@Person点定义别名individual,为这些路径定义别名career
      n({@Person} as individual).e({@workAs}).n({@Job.title == "Waiter"}) as career
      
      // 由Areith-@workAs-@Job-@workAs-@Person点边组成的两步路径
      // 为其中的@Job点定义别名job,将末尾的@Person点定义别名other
      n({@Person.name == "Areith"}).e({@workAs}).n({@Job} as job).e({@workAs}).n({@Person} as other)
      
      ...
      

      路径模板的特征:

      • 这是一种非常直观、形象的路径描述方式
      • 路径中的某个点、某个边或整条路径都可以定义别名
      图六:将同样的图数据描述为不同的路径

      图六中两个模板所描述的路径是否相同?嬴图中的路径是从左向右书写并解析的,这两个路径模板的点、边顺序不一致,因此不相同。但它们描述的是相同的图数据。

      请完成以下信息后可下载此书
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写
      *
      你的电话必须填写