Types reference

When you define your Ontology, you can use a wide variety of types to represent real-world definitions of the data you brought into Foundry. The types used in Foundry are categorized as Ontology types or data types:

  • Ontology types are used to model a real-world domain into an Ontology.
  • Data types are used to represent data values. Data types in Foundry are inspired by similar concepts in RDF ↗, OWL ↗ and XSD ↗.

Ontology types

The following types are available to build and define your Ontology.

Object type

An object type is a schema definition of a real-world entity or event, comprised of individual objects. For example, both JFK and LHR can be objects of an Airport object type.

Learn more about object types.

Property

A property of an object type is a characteristic that informs a real-world entity or event. For example, if LHR is an object type of Airports, name and country are properties of Airports. For the LHR object, the property values would be the following:

  • name: LHR
  • country: United Kingdom

Learn more about properties.

Shared property

A shared property is a property that can be used on multiple object types in your Ontology. Shared properties allow for consistent data modeling across object types and centralized management of property metadata.

Learn more about shared properties.

A link type is the schema definition of a relationship between two object types. A link refers to a single instance of that relationship between two objects.

Learn more about link types.

Action type

An action type is the schema definition of a set of changes or edits to objects, property values, and links that a user can make all at once. Action types also include the side effect behaviors that happen when an Action occurs. Once an action type is configured in the Ontology, end users can make changes to objects by applying Actions.

Learn more about action types.

Interfaces

An interface is an Ontology type that describes the shape of an object type and its capabilities. Interfaces provide object type polymorphism, allowing for consistent modeling of and interaction with object types that share a common shape.

Learn more about interfaces.

Data types

The following types are available to represent data values.

Field types

Field types are the set of primitive types supported for fields in datasets. These types include Boolean, String, Integer, Long, Array, and so on. Review our documentation on supported field types for a complete list of available field types.

Base types

Base types are used to define properties on objects. The base type of a property determines the set of operations available for that property in user applications. All field types are valid base types except for Map, Struct, Decimal, and Binary types.

Base types also include the following advanced types:

  • Vector: A type for storing vectors on objects for use in a semantic search.
  • Geohash: A type for defining properties that represent geographic points.
  • Geoshape: A type for defining properties that represent geographic shapes.
  • Attachment: A type for storing files on objects for use with functions on objects.
  • Time series: A type for defining a property as a time series.
  • Media reference: A type for defining a reference to a media file.
  • Cipher text: A type for storing a string value encoded with Cipher.

All base types may be used in arrays to represent multiple values for a property, excluding the Vector and Time series types.

Value types

Value types are semantic wrappers around a field type comprised of metadata and constraints that can enhance type safety, improve expressiveness, and provide additional context. Value types encapsulate domain-specific data types and enforce data validation in a manner reusable across the platform. Commonly used value types include email addresses, URLs, UUIDs, and enumerations.

While field types and base types are defined statically, value types are customized within the context of a given space. As a result, users cannot create new field types or base types but are able to create value types dynamically.

Learn more about value types.