Assets

Assets represent the things that are being tracked or managed. Land, plants, animals, and equipment are all types of Assets. Modules can provide additional Asset types.

Assets are generally limited in the information they contain. Most of the valuable historical information about an Asset will be stored in Logs that reference it.

Type

Each Asset must have a type. All Asset types have a common set of attributes and relationships. Specific Asset types may also add additional attributes and relationships (collectively referred to as "fields"). Asset types are defined by modules, and are only available if their module is enabled. The modules included with farmOS define the following Asset types:

  • Land
  • Plant
  • Animal
  • Equipment
  • Compost
  • Structure
  • Sensor
  • Water
  • Material
  • Product
  • Group*

*Group Assets are unique in that they can "contain" other Assets as "group members". This is a flexible feature that can be used for many purposes. One typical use case is representing "herds" of Animal Assets. Group membership changes are recorded via Logs (similar to location changes), so it is possible to see all the Groups that an Asset was a member of in the past, when/why they were moved, etc. See farmOS Group Membership Logic for more information.

ID

Each Asset will be assigned two unique IDs in the database: a universally unique identifier (UUID), and an internal numeric ID.

The UUID will be unique across farmOS databases. The internal ID will only be unique to a single farmOS database. Therefore, the farmOS API uses UUIDs to ensure that IDs pulled from multiple farmOS databases do not conflict. Internally, farmOS modules use the internal IDs to perform CRUD operations.

Attributes

Assets have a number of attributes that serve to describe their meta information. All Assets have the same standard set of attributes. Modules can add additional attributes.

Standard attributes

Attributes that are common to all Asset types include:

  • Name
  • Status
  • Flags
  • Geometry
  • Intrinsic geometry
  • Is location
  • Is fixed
  • Notes
  • ID Tags
  • Data

Name

Assets must have a name that describes them. The name is used in lists of Assets to easily identify them at quick glance.

Status

Assets can be marked as "active" or "archived" to indicate their status. Archived Assets will be hidden from most lists in farmOS unless they are explicitly requested.

Flags

Flags can be added to Assets to help with sorting and filtering. farmOS provides a set of default flags, including "Priority", "Needs review", and "Monitor". Modules can provide additional flags, such as "Organic".

Geometry

The geometry of an Asset describes where it exists at a given point in time. An Asset can either be "fixed", or it can be moved around via movement Logs. This geometry field is not editable itself, but is rather computed based on the farmOS Location Logic.

See related fields "Intrinsic geometry" and "Is fixed" below.

Intrinsic geometry

If an Asset is "fixed" in location (see "Is fixed" below), then it can have an "intrinsic geometry" to describe where it exists. This is only used if the Asset is designated as "fixed". Otherwise, its geometry and location are determined by movement Logs.

For more information, see farmOS Location Logic.

Is location

An Asset can be designated as a "location" to indicate that other Assets may be moved to it using movement Logs.

For more information, see farmOS Location Logic.

Is fixed

Assets can be designated as "fixed" to indicate that they do not move around in space and time. Examples of fixed Assets include land, buildings, water sources, fixed infrastructure such as pivot irrigation systems, etc. If an Asset is fixed, then it can have "intrinsic geometry" (see "Intrinsic geometry" above). Otherwise, its geometry and location can change over time, as determined by movement Logs.

For more information, see farmOS Location Logic.

Notes

Notes can be added to an Asset to describe it in more detail. This is a freeform text field that allows a limited set of HTML tags, including links, lists, blockquotes, emphasis, etc.

ID Tags

Often an Asset will have ID tags associated with it. For example, an animal may have an RFID collar or an ear tag with a unique ID. ID tags in farmOS can store this ID, as well as its type and location.

Data

Assets have a hidden "data" field on them that is only accessible via the API. This provides a freeform plain text field that can be used to store additional data in any format (eg: JSON, YAML, XML). One use case for this field is to store remote system IDs that correspond to the Asset. So if the Asset is created or managed by software outside of farmOS, it can be identified easily. It can also be used to store additional structured metadata that does not fit into the standard Asset attributes.

Additional attributes

Assets may contain additional attributes:

  • Inventory

Inventory

The inventory attribute summarizes current Asset inventory levels. This field is not editable itself, but is rather computed based on "inventory adjustment" logs. Each inventory can have a "measure", "value", and "units".

For more information, see farmOS Inventory Logic.

This field is added to all Asset types by default only if the Inventory module is enabled.

Relationships

Assets can be related to other records in farmOS These relationships are stored as reference fields on Asset records.

All Assets have the same standard set of relationships. Modules can add additional relationships.

Relationships that are common to all Asset types include:

  • Location
  • Parents
  • Owners
  • Images
  • Files

Location

Similar to the Asset "Geometry" field described above, an Asset's location describes where it is. Whereas the "Geometry" field contains raw geometry data (points, lines, and polygons), this field is a reference to one or more other Assets, which themselves are designated as "locations" (see "Is location" attribute above). If an Asset is designated as "fixed" then it can have an "intrinsic geometry" (see "Intrinsic geometry" above), but it will not have a location.

For more information, see farmOS Location Logic.

Parents

Assets can specify "Parent" Assets that they descend from. This creates a lineage relationship that can be used to track breeding of Plant and Animal Assets. It can also be used to create more general hierarchical relationships between Assets such as representing a "bed" inside a "field" (represented by two Land Assets related through the Parents field).

Multiple parents are allowed, but circular relationships are not.

Owners

Assets can be assigned to one or more Users in farmOS.

Images

Images can be attached to Assets. This provides a place to store photos of the Asset.

Files

Files can be attached to Assets. This provides a place to put documents such as Shapefiles, PDFs, CSVs, or other files associated with the Asset.

Additional relationships

Assets may contain additional relationships:

  • Group membership

Group membership

The group membership of an Asset references Group Assets which the Asset is a member of. This field is not editable itself, but is rather computed based on "group assignment" logs.

For more information, see farmOS Group Membership Logic.

This field is added to all Log types by default only if the Group module is enabled.

Type-specific fields

In addition to the fields that are common to all Asset types described above, some types add additional type-specific fields. These include:

Animal Assets

Animal Assets have the following additional attributes:

  • Birthdate (timestamp)
  • Is castrated (boolean)
  • Nicknames (multiple strings)
  • Sex ("F" or "M" string)

And the following additional relationships:

  • Animal type (References a Term in the "Animal type" vocabulary)

Equipment Assets

Equipment Assets have the following additional attributes:

  • Manufacturer (string)
  • Model (string)
  • Serial number (string)

Land Assets

Land Assets have the following additional attributes:

  • Land type (string)

Material Assets

Material Assets have the following additional relationships:

  • Material type (references a Term in the "Material type" vocabulary)

Plant Assets

Plant Assets have the following additional relationships:

  • Plant type (references a Term in the "Plant type" vocabulary)
  • Season (references a Term in the "Season" vocabulary)

Product Assets

Product Assets have the following additional relationships:

  • Product type (references a Term in the "Product type" vocabulary)

Sensor Assets

Sensor Assets have an additional "Data streams" relationship, which is used to reference Data Streams associated with the sensor.

Structure Assets

Structure Assets have the following additional attributes:

  • Structure type (string)