Provenance properties and class mixins for use with the things schema
This schema mixin provides the majority of the terms and relationships defined by [PROV-O](https://www.w3.org/TR/prov-o/), with the following exceptions and deviations. It is implemented as a mixin to be able to flexibly add provenance-focused interfaces to classes that are part of a topical class hierarchy already. All relationships are implemented using the "qualified relation" pattern, but combined with properties that are named after their (shortened) "binary" equivalent. For example, a `wasDerivedFrom` is implemented as the `derived_from` slot, and has the `Derivation` association class as its `range`. This means that qualifying properties of a relationship are consolidated into the respective relationship class. Consequently, there is no equivalent of, for example, `generatedAtTime`. Instead, the time needs to be annotated via the `at_time` slot of `Generation`. Consistent with PROV-DM, all relationship classes support the expression of arbitrary attributes to further characterize a relationship beyond the set of dedicated slots. This is achieved by applying the core `ThingMixin` to the `Influence` class, the base class of all relationships. This allows for the same annotation patterns that are enabled by `Thing` to also be used for PROV relationships. This includes, custom attributes, `characterized_by` relations, mapping declarations, annotations, and semantic mappings. All relationship classes uniformly use an `object` slot to reference the respective entity, agent, or activity. PROV-O's `actedOnBehalfOf` is named `delegated_by` for consistency with the association class `Delegation`. No inverse properties are defined, i.e. there is `invalidated_by`, but not `invalidated`. This schema does not implement support for PROV bundles. There is no explicit support for annotating an `Influence` with an unspecific `Activity` (`hadActivity`, optional in PROV-O). For describing, for example, the generating activity in a derivation, `generated_by` is provided. The annotation of `Agent` and `Entity` instances with a location (PROV-O `atLocation`) is not supported. The idea of a (single) location for these concepts is at odds with the core approach of this schema to use persistent identifiers for all `Thing`s. However, `at_location` is supported within `Start` and `End` that are available to annotate `Activity`, and `EntityInfluence` like `Usage` with temporal and spatial locators. There is not direct support for the PROV-O classes `Location`, `Plan`, (and with it `hadPlan`), `Role`, and `SoftwareAgent`. The `Thing` class can be used to express these concepts in a generic fashion. Dedicated support is left to more application-specific schemas that require these concepts. The PROV-O concept of `PrimarySource`, as a special case of a `Derivation` is not supported. Use the role annotation to identify an influencing entity in a `Derivation` as a "primary source". More information may be available on the schema's [about page](about). The schema definition is available as - [JSON-LD context](../unreleased.context.jsonld) - [LinkML YAML](../unreleased.yaml) - [LinkML YAML (static/resolved)](../unreleased.static.yaml) - [OWL TTL](../unreleased.owl.ttl) - [SHACL TTL](../unreleased.shacl.ttl)
ALL CONTENT HERE IS UNRELEASED AND MAY CHANGE ANY TIME
An activity is something that occurs over a period of time and acts upon or with entities; it may include consuming, processing, transforming, modifying, relocating, using, or generating entities.
Something that bears some form of responsibility for an activity taking place, for the existence of an entity, or for another agent's activity.
A physical, digital, conceptual, or other kind of thing with some fixed aspects; entities may be real or imaginary.
An established standard to which the subject conforms.
This property SHOULD be used to indicate a model, schema, ontology, view or profile that the subject conforms to.
Timepoint at which the subject was (last) changed, updated or modified.
a related problem also exists for `linkml-validate`, we cannot have a more specific range right now
successful validation with `datetime` as a range and linkml-jsonschema-validate` depends on a patched linkml, see https://github.com/linkml/linkml/issues/1806
Timepoint at which the subject was (last) published.
The subject depends on object in some way.
End is when an activity is deemed to have been ended by some trigger. The activity no longer exists after its end. Any usage, generation, or invalidation involving an activity precedes the activity's end.
One or more keywords or tags describing the subject.
A descriptive identifier that locates a resource within a containing resource. This can be a unique name, a numerical key, or another notation that uniquely identifies the subject within the containing resource.
For specifying a location via a globally unique identifier see `at_location`.
Declares that the subject and an object are equal. Can be used to indicate a URL of a reference Web page that unambiguously indicates the subject's identity. For example, the URL of the subject's Wikipedia page, Wikidata entry, or official website.
A shortened name for the subject. For example, an acronym, initialism, nickname, or other abbreviation of the `name`.
Start is when an activity is deemed to have been started by some trigger. The activity did not exist before its start. Any usage, generation, or invalidation involving an activity follows the activity's start.
A summarily description of the subject. It is closely related to a `name`, but often less compact and more descriptive. Typically used for documents.
A related resource of which the described resource is a version, edition, or adaptation.
Name of the subject. A name is closely related to a `title`, but often more compact and identifier-like, but without the implication of uniqueness of an identifier. A name is often used by technical systems to display an item in an organizational structure, such as a file in a directory hierarchy.
The entity that the subject is a part of. A core relation that holds between a part and its whole.
A related resource that is included either physically or logically in the described resource.
A tag/value pair with the semantics of OWL Annotation.
A `Thing` that is a value of some kind. This class can be used to describe an outcome of a measurement, a factual value or constant, or other qualitative or quantitative information with an associated identifier. If no identifier is available, an `AttributeSpecification` can be used within the context of an associated `Thing` (`attributes`).
Mix-in for a (structured) value specification. Two slots are provided to define a (literal) value (`value`) and its type (`range`).
This mixin enables the expression of quantitative and qualitative assessments/measurements/values. For a quantitative value, the numerical value, and a possible unit is given. For a qualitative value, `defined_by` is used to identify the quality of the assessment from a controlled vocabulary or standard term.
A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation.
An activity association is an assignment of responsibility to an agent for an activity, indicating that the agent had a role in the activity. It further allows for a plan to be specified, which is the plan intended by the agent to achieve some goals in the context of this activity.
PROV-O "wasAssociatedWith" is a short-cut property. "Association" also has "agent".
Attribution is the ascribing of an entity to an agent.
PROV-O "wasAttributedTo" is a short-cut property. "Attribution" also has "agent".
Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred.
A list of terms from different schemas or terminology systems that have broader meaning.
Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship.
A list of terms from different schemas or terminology systems that have close meaning.
A comment about a metadata record either providing additional information for a record curation, or leaving a comment after curation occurred. This can be used to include information that is deemed relevant, but could not be expressed in the provided fields.
A list of terms from different schemas or terminology systems that have identical meaning.
An unambiguous reference to the subject within a given context.
Communication is the exchange of an entity by two activities, one activity using the entity generated by the other.
PROV-O "wasInformedBy" is a short-cut property. "Communication" also has "activity".
A list of terms from different schemas or terminology systems that have narrower meaning.
A list of terms from different schemas or terminology systems that have related meaning.
Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot.
An RDF statement that links a `predicate` (a `Property`) with an `object` (a `Thing`) to the subject to form a triple. A `Statement` is used to qualify a relation to a `Thing` referenced by its identifier. For specifying a qualified relation to an attribute that has no dedicated identifier, use an `AttributeSpecification`.
An agent responsible for making an entity.
Indicate a resource defining the subject. This may be a vocabulary that describes the subject.
Delegation is the assignment of authority and responsibility to an agent (by itself or by another agent) to carry out a specific activity as a delegate or representative, while the agent it acts on behalf of retains some responsibility for the outcome of the delegated work. For example, a student acted on behalf of his supervisor, who acted on behalf of the department chair, who acted on behalf of the university; all those agents are responsible in some way for the activity that took place but we do not say explicitly who bears responsibility and to what degree.
This is PROV-O's "acted_on_behalf_of", which is a short-cut property -- "Delegation" also identifies an agent.
naming is different for homogeneity with the other slots
Label that can be shown when the metadata record is displayed as an item.
Note that can be shown when the record is displayed as an item. This is typically longer than a label.
Invalidation is the start of the destruction, cessation, or expiry of an existing entity by an activity. The entity is no longer available for use (or further invalidation) after invalidation. Any generation or usage of an entity precedes its invalidation.
PROV-O "wasInvalidatedBy" is a short-cut property. "Invalidation" also identifies an "entity".
This is conceptually the same as an instance-level `broad_mappings`. It can make sense to use this slot (in addition) in order to enable straightforward type declarations for instances from a controlled, application specific vocabulary, while also keeping the ability to use `broad_mappings` for alignment with external vocabularies and applications.
String of characters such as "T58:5" or "30:4833" used to uniquely identify a concept within the scope of a given concept scheme.
Persistent and globally unique identifier of a `Thing`.
A quotation is the repeat of (some or all of) an entity, such as text or image, by someone who may or may not be its original author. Quotation is a particular case of derivation.
PROV-O "wasQuotedFrom" is a short-cut property. "Quotation" also identifies an "entity".
Declares that the value of a `Thing` or `AttributeSpecification` are instances of a particular class.
A revision is a derivation for which the resulting entity is a revised version of some original. The implication here is that the resulting entity contains substantial content from the original. Revision is a particular case of derivation.
PROV-O "wasRevisionOf" is a short-cut property. "Revision" also identifies an "entity".
An entity that is a specialization of another shares all aspects of the latter, and additionally presents more specific aspects of the same thing as the latter. In particular, the lifetime of the entity being specialized contains that of any specialization. Examples of aspects include a time period, an abstraction, and a context associated with the entity.
A unit of measurement is a standardized quantity of a physical quality.
An activity association is an assignment of responsibility to an agent for an activity, indicating that the agent had a role in the activity.
An attribute is conceptually a thing, but it requires no dedicated identifier (`pid`). Instead, it is linked to a `Thing` via its `attributes` slot and declares a `predicate` on the nature of the relationship.
Attribution is the ascribing of an entity to an agent. When an entity e is attributed to agent ag, entity e was generated by some unspecified activity that in turn was associated to agent ag. Thus, this relation is useful when the activity is not known, or irrelevant.
Two alternate entities present aspects of the same thing. These aspects may be the same or different, and the alternate entities may or may not overlap in time.
A entity from which the subject was created through some kind of process. Derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity.
PROV-O "wasDerivedFrom" is a short-cut property. "Derivation" also has "entity".
Usage is the beginning of utilizing an entity by an activity. Before usage, the activity had not begun to utilize this entity and could not have been affected by the entity.
PROV-O "used" is a short-cut property. "Usage" also has "entity".
ActivitiyInfluence is the capacity of an activity to have an effect on the character, development, or behavior of another by means of generation, invalidation, communication, or other.
AgentInfluence is the capacity of an agent to have an effect on the character, development, or behavior of another by means of attribution, association, delegation, or other.
Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.
An identifier is a label that uniquely identifies an item in a particular context. Some identifiers are globally unique. All identifiers are unique within their individual scope.
The PROV data model is implicitly based on a notion of instantaneous events (or just events), that mark transitions in the world. Events include generation, usage, or invalidation of entities, as well as starting or ending of activities. This notion of event is not first-class in the data model, but it is useful for explaining its other concepts and its semantics
An RDF property, a `Thing` used to define a `predicate`, for example in a `Statement`.
Mix-in with the common interface of `Thing` and `AttributeSpecification`. This interface enables type specifications (`rdf:type`) for things and attributes via a `type` designator slot to indicate specialized schema classes for validation where a slot's `range` is too generic. A thing or attribute can be further describe with statements on qualified relations to other things (`characterized_by`), or inline attributes (`attributes`). A set of `mappings` slots enables the alignment for arbitrary external schemas and terminologies.
A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective.
A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity.
End is when an activity is deemed to have been ended by an entity, known as trigger. The activity no longer exists after its end. Any usage, generation, or invalidation involving an activity precedes the activity's end. An end may refer to a trigger entity that terminated the activity, or to an activity, known as ender that generated the trigger.
EntityInfluence is the capacity of an entity to have an effect on the character, development, or behavior of another by means of usage, start, end, derivation, or other.
Start is when an activity is deemed to have been started by an entity, known as trigger. The activity did not exist before its start. Any usage, generation, or invalidation involving an activity follows the activity's start. A start may refer to a trigger entity that set off the activity, or to an activity, known as starter, that generated the trigger.
Identification of the process that led to the production of the subject entity. Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.
PROV-O "wasGeneratedBy" is a short-cut property. "Generation" also has "activity".
Reference to a `Property` within a `Statement`.
Value that is a direct representation of a thing.
A relation of an information artifact to the subject, such as a URL identifying the topic of a document.
Influence is the capacity of an entity, activity, or agent to have an effect on the character, development, or behavior of another by means of usage, start, end, generation, invalidation, communication, derivation, attribution, association, or delegation.
Associate the subject with a location. This can be a geographic place, or another uniquely identified object.
For specifying a context-specific location see `locator`.
Time at which an instanteneous event takes place or took place.
PROV-O "endedAt" is a short-cut property. "Start" also has "atTime".
same naming remarks as for "started" apply.
PROV-O "startedAt" is a short-cut property. "Start" also has "atTime".
name is just started, because the association class Start has both time information and trigger information. Hence the name needs to capture both started_by and started_at. "started" has the unfortunate ambiguity of having started an activity, however the range "Start" is an "EntityInfluence" where the linked "object" is an Entity -- hopefully limiting the confusion.
Describes the function of an entity or agent (object) within the scope of a relationship with the subject.
PROV-O "wasInfluencedBy" is a short-cut property. "Influence" also identifies an "influencer".
State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range.
Reference to a `Thing` within a `Statement`.
The most basic, identifiable item. In addition to the slots that are common between a `Thing` and an `AttributeSpecification` (see `ThingMixin`), two additional slots are provided. The `pid` slot takes the required identifier for a `Thing`. The `relation` slot allows for the inline specification of other `Thing` instances. Such a relation is unqualified (and symmetric), and should be further characterized via a `Statement` (see `characterized_by`). From a schema perspective, the `relation` slots allows for building self-contained, structured documents (e.g., a JSON object) with arbitrarily complex information on a `Thing`.