Skip to main content

Creating Predicates: Part 1

Now, we have four collections in our ledger: chat, person, comment, and artist, and we need to create predicates for those collections.

Creating Predicates#

Collections and predicates are stored in the ledger the same way that any other type of information is stored.

When you are creating a new predicate, you are creating a new subject of type _predicate, and that subject contains certain predicates. These are that particular predicate's predicates.

There are many predicates that you can specify for each predicate. The full list of built-in predicates can be found in the docs.

We will using the following predicate predicates:

  • _predicate/name
  • _predicate/doc
  • _predicate/type

_predicate/name must be namespaced with the collection you intend it to be used within. For example, if you want to make a predicate for a person's name, it can't just be name - it must be person/name.

_predicate/type is data type for this predicate. The full list of valid types can be found in the docs, but for this lesson we'll be only using: string (text), int (number), ref (reference), and instant (time represented by number of seconds).

If we want to create a predicate - person/fullName that should be of type string, meaning it is text. The transaction would look like this:

[{    "_id": "_predicate",    "name": "person/fullName",    "type": "string"}]

Create `chat/message`

This predicate will contain the text of a chat message. Make sure to specify both the predicate name and type.