Describing an object

Classes as shorthand for shared properties

If objects share a common set of properties (eg 2 arms, 2 legs), then we can define a class, describe the properties of that class, and save some space by using the name of that class (eg "Human") as a shorthand for some of the object's properties:

The "Human" class, and its properties, need to be described in a separate object:

"Human": {
arms: 2,
legs: 2,
}

Distributed ontologies

Referring to objects using names, as above, assumes that there's a shared ontology where each name is unique.

In a decentralised ontology (the web), the same object may be defined in multiple places using different names, and there may be several collisions where descriptions of different objects share the same name.

To avoid this, we refer to objects using "namespaced" names: adding a defined prefix, to produce a universally-unique name (URL) for the object:

JSON-LD

If the properties of the object are not all defined in the same "namespace" as the object itself (they might, for example, be shared between different classes of objects), we can extend the same idea to property names and use URLs for those too:

Linked data

At this point, every part of the object description is either a URL or a literal value. This allows us to join all the objects and properties together into a graph (specifically, a directed acyclic graph), where each object is a node and each property is a connection between nodes (an edge).