Change Password

Please enter the password.
Please enter the password. Between 8-64 characters. Not identical to your email address. Contain at least 3 of: uppercase, lowercase, numbers, and special characters.
Please enter the password.
Submit

Change Nickname

Current Nickname:
Submit

Apply New License

License Detail

Please complete this required field.

  • Ultipa Graph V4

Standalone

Please complete this required field.

Please complete this required field.

The MAC address of the server you want to deploy.

Please complete this required field.

Please complete this required field.

Cancel
Apply
ID
Product
Status
Cores
Applied Validity Period(days)
Effective Date
Excpired Date
Mac Address
Apply Comment
Review Comment
Close
Profile
  • Full Name:
  • Phone:
  • Company:
  • Company Email:
  • Country:
  • Language:
Change Password
Apply

You have no license application record.

Apply
Certificate Issued at Valid until Serial No. File
Serial No. Valid until File

Not having one? Apply now! >>>

Product Created On ID Amount (USD) Invoice
Product Created On ID Amount (USD) Invoice

No Invoice

v5.0
Search
    English
    v5.0

      Property

      Overview

      Properties are associated with a schema to describe different attributes of nodes and edges. For example, a node schema @card may have properties balance and openedDate, while an edge schema @transfers may have properties amount and time.

      In UQL, the operator . extracts a property from a schema. The expression @<schema>.<property> specifies a certain property of a schema, such as @company.name.

      System Property

      Each node and edge in Ultipa come with some system properties:

      System Property Data Type Description
      Node _id string with a length of up to 128 bytes A string-type unique identifier for a node
      _uuid uint64 A numeric unique identifier for a node
      Edge _uuid uint64 A numeric unique identifier for an edge
      _from string The _id of the source node of an edge
      _to string The _id of the destination node of an edge
      _from_uuid uint64 The _uuid of the source node of an edge
      _to_uuid uint64 The _uuid of the destination node of an edge

      Each node has two system properties serving as unique identifiers: _id and _uuid. The _id value can be manually assigned, ensuring distinct identification of nodes, while the _uuid value is always generated by the system.

      Each edge has only the _uuid as its unique identifier, also generated by the system. Each edge connects a source node to a destination node, its _from/_to and _from_uuid/_to_uuid identify its two end nodes.

      Custom Property

      You can create custom properties for a schema to store additional information. See Creating Properties.

      Showing Properties

      To retrieve information about properties in current graphset:

      // Shows all properties
      show().property()
      
      // Shows all node properties
      show().node_property()
      
      // Shows properties associated with a specified node schema
      show().node_property(@card)
      
      // Shows all edge properties
      show().edge_property()
      
      // Shows properties associated with a specified edge schema
      show().edge_property(@transfers)
      

      The information about properties is organized into different tables:

      • Node properties: Stored in _nodeProperty (all properties) and _nodeProperty_shard_N (properties with data in shard N) tables.
      • Edge properties: Stored in _edgeProperty (all properties) and _edgeProperty_shard_N (properties with data in shard N) tables.

      Each table includes fields that provide essential details about each property:

      Field
      Description
      name The name assigned to the property.
      type The data type of the property.
      lte Whether the property is loaded to the shards' memory for query acceleration.
      schema The schema that the property is associated with.
      description The description given to the property.
      encrypt The encryption method used for the property.

      You shall see all custom properties in these tables. System properties are not involved except _id.

      Creating Properties

      You can create one or more properties using a single create() statement. Each property is specified by chaining a node_property() or edge_property() method. To encrypt a property, use the encrypt() method.

      create()
        .node_property(<schema>, "<propName>", <propType?>, "<propDesc?>").encrypt("<encMeth?>")
        .edge_property(<schema>, "<propName>", <propType?>, "<propDesc?>").encrypt("<encMeth?>")
        ...
      
      Method Param Description
      node_property() or edge_property() <schema> Specifies the node or edge schema (e.g., @user); @* denotes all node or edge schemas.
      <propName> Name of the property. Naming conventions are:
      • 2 to 64 characters.
      • Cannot start with a tilde (~).
      • Cannot contain backquotes (`) or the name of any system properties, system table aliases and system aliases (refer to Reserved Keywords).
      Property names must be unique among a schema.
      <propType?> Optional. Data type of the property. When it is omitted, string is used by default. Note that the type cannot be modified after the property is created.
      <propDesc?> Optional. Description of the property.
      encrypt() <encMeth?> Optional. Encrypts property values using one of the supported encryption methods: AES128 (default), AES256, RSA and ECC.

      Integral Properties

      The supported integral property types include int32, uint32, int64 and uint64.

      create().node_property(@user, "age", uint32)
      

      Decimal Properties

      The supported decimal property types include float, double, and decimal.

      create()
        .edge_property(@links, "distance", float)
        .edge_property(@links, "weight",  "decimal(25,10)", "Weight of the relation")
      

      The decimal(25,10) specifies a decimal type with a precision of 25 (total digits, excluding the decimal point) and a scale of 10 (digits after the decimal point). You may set the precision between 1 to 65, and the scale between 0 to 30. Specifically, decimal(<precision>, <scale>) must be declared within quotes.

      Textual Properties

      The supported textual property types include string and text, with string set as the default type. When defining a property as string, you can omit specifying the type during creation.

      create()
        .node_property(@post, "title")
        .node_property(@post, "content", text)
      

      Temporal Properties

      The supported temporal property types include datetime and timestamp.

      create()
        .node_property(@post, "createdOn", timestamp, "When the post is created")
        .node_property(@post, "publishedOn", datetime, "When the post is published")
      

      Spatial Properties

      The supported spatial property type is point.

      create().node_property(@city, "position", point, "Location of the city")
      

      List Properties

      The supported list property types include int32[], int64[], uint32[], uint64[], float[], double[], string[], text[], datetime[] and timestamp[].

      create().node_property(@user, "interests", "string[]", "user interest tags")
      

      Specifically, the <subtype>[] must be declared within quotes.

      Creating a Property for All Schemas

      To create the property time for all edge schemas:

      create().edge_property(@*, "time", datetime)
      

      Encrypting a Property

      To create the property password and encrypt it using AES256:

      create().node_property(@user, "password", string).encrypt("AES256")
      

      Altering Name and Description

      You can modify name and description of a property using the alter().node_property().set() or alter().edge_property().set() statement.

      In the node_property() or edge_property() method, you can specify a particular property in the form of @<schema>.<property>, or target all properties with the same name in the form of @*.<property>.

      To alter both name and description of the node property @user.name:

      alter().node_property(@user.name).set({name: "Name", description: "Full name"})
      

      To alter name of all the edge properties time:

      alter().edge_property(@*.time).set({name: "createdOn"})
      

      Dropping Properties

      You can drop one or more properties using a single drop() statement. Each property is specified by chaining a node_property() or edge_property() method. When a property is dropped, all related data — including the property values, associated indexes, full-text indexes, and any LTE-ed values held in memory — are removed.

      In the node_property() or edge_property() method, you can specify a particular property in the form of @<schema>.<property>.

      To drop the node property @user.name:

      drop().node_property(@user.name)
      

      To drop the edge property @links.time:

      drop().edge_property(@links.time)
      

      To drop multiple properties:

      drop().node_property(@user.age).edge_property(@links.time)
      
      Please complete the following information to download this book
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写