■ Nouns
Nouns are the things in a Graph. Every Noun has Properties that describe its attributes. Nouns relate to each other through Verbs. Triggers are the potential Events that can happen to a Noun. A Resource is a specific instance of a Noun.
Defining a Noun
The simple syntax for defining a Noun is:
${_icon} ${_name}: ${_description} (${_type})So this example:
☁️ SaaS: Software as a Service (WebApplication)Is the same as the full syntax:
SaaS:
_id: saas
_name: SaaS
_icon: ☁️
_description: Software as a Service
_type: https://schema.org/WebApplicationInternal Properties
Properties that start with an underscore (_) are internal properties of a noun that
provide semantic and functional information about the Noun.
_id
The _id property is the unique identifier for the Noun. It is used to
reference the Noun in other parts of the Graph. It is also used to
generate the URL for the Noun's representation in the App, API, Site, and Docs.
SaaS:
_id: saas
_name: SaaS
_icon: ☁️
_description: Software as a Service
_type: https://schema.org/WebApplication_name
The _name property is the name of the Noun. It is used to generate the
human-readable title of the Noun's representation in the App, API, Site, and Docs.
SaaS:
_id: saas
_name: SaaS
_icon: ☁️
_description: Software as a Service
_type: https://schema.org/WebApplication_icon
The _icon property is the icon of the Noun. It provides the visual representation
of the Noun in the App, API, Site, and Docs.
SaaS:
_id: saas
_name: SaaS
_icon: ☁️
_description: Software as a Service
_type: https://schema.org/WebApplication_description
The _description property is the description of the Noun. It is used to generate the
human-readable description of the Noun's representation in the App, API, Site, and Docs.
SaaS:
_id: saas
_name: SaaS
_icon: ☁️
_description: Software as a Service
_type: https://schema.org/WebApplication_type
The _type property is the base class that Noun inherits from. It can be another Noun
in the Graph, a Noun that was [imported], the name or URL of the Thing on Schema.org,
or the URL of any JSON Schema or TypeScript Type. All Properties on the base Noun are
inherited by the Noun.
SaaS:
_id: saas
_name: SaaS
_icon: ☁️
_description: Software as a Service
_type: https://schema.org/WebApplication_sameAs
The _sameAs property is the URL of the Noun's representation in Schema.org. It provides
the synonymous or canonical representation of the Noun without inheriting any of the
properties of the referenced Noun. This is useful for defining Nouns where you don't want
to inherit all of the properties of the referenced Noun.
SaaS:
_id: saas
_name: SaaS
_icon: ☁️
_description: Software as a Service
_sameAs: https://schema.org/WebApplication_source
The _source property is the URL of the Noun's source data. A Noun with a _source property
implies it is a read-only Noun in a Graph, so it's resources cannot be modified. It is useful for defining
Nouns with Resources that are imported from external sources.
Country:
_plural: Countries
_source: https://json.fyi/countries.json
_id: cca2
_name: name.common
_icon: 🌎_seed
The _seed property is the URL of the Noun's seed data. A Noun with a _seed property
gets its initial Resources seeded from the data at the URL, but Resources can be created, updated,
and deleted.
Product:
_id: entityId
_name: productName
_seed: https://json.fyi/northwind/products.json_state
The _state property of a Noun is a Finite State Machine and the _state of a Resource represents it's current state and context.
Switch:
_state:
initial: inactive
states:
inactive:
on:
toggle: active
active:
on:
toggle: inactive
Properties
Calculated Properties
Property References
Properties can be calculated by referencing other properties in the Noun like _id: iata
Colo:
_id: iata
_source: https://speed.cloudflare.com/locations
iata: stringString Literals
Properties can be calculated by using string literals like _name: ${iata} - ${city}, ${cca2}, ${region}
Colo:
_name: ${iata} - ${city}, ${cca2}, ${region}
_source: https://speed.cloudflare.com/locationsJavaScript Functions
Calculated Properties can be written JavaScript expressions like Date.now() + 1000 * 60 * 60 * 24 * 30
Cache:
expires: Date.now() + 1000 * 60 * 60 * 24 * 30Relationships
A Noun can have several different types of relationships with another Noun
Embedded One-to-One
By referencing a Noun directly as the type, without a . or -> then the referenced Noun is embedded
in the document as a property of the parent Noun.
Colo:
_id: iata
_source: https://speed.cloudflare.com/locations
iata: stringReference One-to-One
Embedded One-to-Many
Reference One-to-Many
Lookup One-to-Many
Reference Many-to-Many
Lookup Many-to-Many
Schema.org
Schema.org was created by Google, Microsoft, and other search engines as way to standardize the way that data is structured on the web.