Properties

Contents

Introduction

Properties contain the actual data inside a node. Properties use a key-value format.

The key must be unique within the node, and the value must have a specific valueType, such as String, or GeoPoint. The valueType is used to index the property correctly, and does the basic validation.

Property anatomy

Examples of what a property might look like:

mytext = "a string"
mynumber = 1

Some characters are illegal in a property key. Here’s a list of illegal characters:

  • _ is system reserved prefix

  • . is the path separator.

  • [ and ] are array index indicators.

Properties may also be nested, making the key a path. Elements in the path are separated by . (dot).

Here’s an example of properties with arrays and nested properties.

first-name = "Thomas"
cities = ["Oslo", "San Francisco"]
city.location = geoPoint('37.785146,-122.39758')
person.age = 39
person.birth-date = localDate("1975-17-10")

In the example above, the property person is of the ValueType Set. Sets are special in the way that they don’t hold actual values, but rather act as containers for other properties.

Properties are of a specific ValueType. ValueTypes are used for validation and securing correct indexing.

System Properties

In order to separate system defined properties from user defined properties, _ (underscore) has been reserved as a starting character for the system properties.

The repository contains several standard metadata properties such as _id, _name, and _timestamp. The full list of

Core properties

System Property Value Type Indexing Comment

_id

String

string

Holds the unique id of the node, typically a UUID

_name

String

string

Holds the name of the node. Must be unique within its scope (nodes with same parent)

_parentPath

String

string

Reference to parent node path

_path

String

path, string

Dynamic property resolved from parent path + node name

_childOrder

String

string

Default ordering of children when using getChildren()

_manualOrderValue

Long

number, string

Numeric order value used for the builtin manual ordering

Versioning properties

_state

String

string

Used for keeping state of a node in a branch

_ts

datetime, string

The last time this node was modified

_versionKey

string

For every change to a node, a unique versionKey is generated

Indexing properties

System Property Value Type Indexing Comment

_nodeType

string

string

Used to create collections of nodes in a repository

_indexConfig

string

Not indexed

Node specific index configuration

_allText

String

string, analyzed, ngram

Aggregates text across other string properties in the node

_references

Reference

string

Aggregates all reference properties in the node

Access control properties

Permissions set on a node are indexed differently from what the domain object looks like. The index structure is is flattened, and enables an effective way to query nodes based on access control.

System Property Value Type Indexing Comment

_permissions_read

String

Principals with read access

_permissions_create

String

Principals with create access (create children of node)

_permissions_delete

String

Principals with delete access

_permissions_modify

String

Principals with modify access

_permissions_publish

String

Principals with publish access

_permissions_readpermissions

String

Principals with access to read node permissions

_permissions_writepermissions

String

Principals with access to write node permissions


Contents

Contents