Schema for a generic (data) provenance annotation
This schema builds on the Thing
schema, and diversifies it to capture
the key provenance concepts Agent, Activity,
Entity, and their relationships. It does that by drawing on (a
subset) of the PROV data model PROV-DM.
Central paradigm of the schema is the qualified relation
pattern.
The three Thing derived key concepts Agent, Activity, and
Entity build on the Thing slot relations (symmetric property) for
inline declaration of related things, and extend the basic means of
qualifying a relationship via characterized_by
and with provenance specific slots, and
qualified_relations for declaring the roles of
related things.
Specifically the latter approach takes the place of all of the various
qualified* properties defined in PROV. Rather than supporting association
classes like prov:Derivation or prov:Generation, such relationships are
annotated by linking to things via slots like
derived_from or
generated_by, and characterizing the relationship
via qualified_relations, and a (custom)
Role declaration.
The schema is entity-centric, meaning that entity properties are preferred
over activity properties expressing the same (inverse) relationship. For
example, an entity's generated_by is implemented,
but not an activity's generated.
This schema also incorporates the schemas
The schema definition is available as
URI: https://concepts.datalad.org/s/prov/unreleased
Name: prov-schema
Schema Diagram
erDiagram Activity { W3CISO8601 ended_at W3CISO8601 started_at uriorcurie pid uriorcurieList broad_mappings uriorcurieList close_mappings string description uriorcurieList exact_mappings uriorcurieList narrow_mappings uriorcurieList related_mappings NodeUriOrCurie schema_type } Agent { uriorcurie pid uriorcurieList broad_mappings uriorcurieList close_mappings string description uriorcurieList exact_mappings uriorcurieList narrow_mappings uriorcurieList related_mappings NodeUriOrCurie schema_type } Annotation { string annotation_value } AttributeSpecification { uriorcurieList broad_mappings uriorcurieList close_mappings string description uriorcurieList exact_mappings uriorcurieList narrow_mappings uriorcurieList related_mappings NodeUriOrCurie schema_type uriorcurie range string value } Checksum { uriorcurie creator HexBinary notation NodeUriOrCurie schema_type } ComputedIdentifier { uriorcurie creator string notation NodeUriOrCurie schema_type } DOI { string schema_agency uriorcurie creator string notation NodeUriOrCurie schema_type } Entity { uriorcurie pid uriorcurieList broad_mappings uriorcurieList close_mappings string description uriorcurieList exact_mappings uriorcurieList narrow_mappings uriorcurieList related_mappings NodeUriOrCurie schema_type } Identifier { uriorcurie creator string notation NodeUriOrCurie schema_type } InstantaneousEvent { W3CISO8601 at_time uriorcurie pid uriorcurieList broad_mappings uriorcurieList close_mappings string description uriorcurieList exact_mappings uriorcurieList narrow_mappings uriorcurieList related_mappings NodeUriOrCurie schema_type } IssuedIdentifier { string schema_agency uriorcurie creator string notation NodeUriOrCurie schema_type } Location { uriorcurie pid uriorcurieList broad_mappings uriorcurieList close_mappings string description uriorcurieList exact_mappings uriorcurieList narrow_mappings uriorcurieList related_mappings NodeUriOrCurie schema_type } Property { uriorcurie pid uriorcurieList broad_mappings uriorcurieList close_mappings string description uriorcurieList exact_mappings uriorcurieList narrow_mappings uriorcurieList related_mappings NodeUriOrCurie schema_type } Relationship { NodeUriOrCurie schema_type } Role { uriorcurie pid uriorcurieList broad_mappings uriorcurieList close_mappings string description uriorcurieList exact_mappings uriorcurieList narrow_mappings uriorcurieList related_mappings NodeUriOrCurie schema_type } SoftwareAgent { uriorcurie pid uriorcurieList broad_mappings uriorcurieList close_mappings string description uriorcurieList exact_mappings uriorcurieList narrow_mappings uriorcurieList related_mappings NodeUriOrCurie schema_type } Statement { } Thing { uriorcurie pid uriorcurieList broad_mappings uriorcurieList close_mappings string description uriorcurieList exact_mappings uriorcurieList narrow_mappings uriorcurieList related_mappings NodeUriOrCurie schema_type } ThingMixin { uriorcurieList broad_mappings uriorcurieList close_mappings string description uriorcurieList exact_mappings uriorcurieList narrow_mappings uriorcurieList related_mappings NodeUriOrCurie schema_type } TransientRelationship { W3CISO8601 started_at W3CISO8601 ended_at NodeUriOrCurie schema_type } ValueSpecification { uriorcurie range string value uriorcurie pid uriorcurieList broad_mappings uriorcurieList close_mappings string description uriorcurieList exact_mappings uriorcurieList narrow_mappings uriorcurieList related_mappings NodeUriOrCurie schema_type } ValueSpecificationMixin { uriorcurie range string value } Activity ||--|o Location : "at_location" Activity ||--}o Activity : "informed_by" Activity ||--}o Agent : "associated_with" Activity ||--}o Annotation : "annotations" Activity ||--}o AttributeSpecification : "attributes" Activity ||--}o Identifier : "identifiers" Activity ||--}o Relationship : "qualified_relations" Activity ||--}o Statement : "characterized_by" Activity ||--}o Thing : "relations" Agent ||--|o Location : "at_location" Agent ||--}o Agent : "acted_on_behalf_of" Agent ||--}o Annotation : "annotations" Agent ||--}o AttributeSpecification : "attributes" Agent ||--}o Identifier : "identifiers" Agent ||--}o Relationship : "qualified_relations" Agent ||--}o Statement : "characterized_by" Agent ||--}o Thing : "relations" Annotation ||--|o Thing : "annotation_tag" AttributeSpecification ||--|| Property : "predicate" AttributeSpecification ||--}o Annotation : "annotations" AttributeSpecification ||--}o AttributeSpecification : "attributes" AttributeSpecification ||--}o Statement : "characterized_by" Entity ||--}o Activity : "generated_by" Entity ||--}o Agent : "attributed_to" Entity ||--}o Annotation : "annotations" Entity ||--}o AttributeSpecification : "attributes" Entity ||--}o Entity : "derived_from" Entity ||--}o Identifier : "identifiers" Entity ||--}o Relationship : "qualified_relations" Entity ||--}o Statement : "characterized_by" Entity ||--}o Thing : "relations" InstantaneousEvent ||--}o Annotation : "annotations" InstantaneousEvent ||--}o AttributeSpecification : "attributes" InstantaneousEvent ||--}o Identifier : "identifiers" InstantaneousEvent ||--}o Relationship : "qualified_relations" InstantaneousEvent ||--}o Statement : "characterized_by" InstantaneousEvent ||--}o Thing : "relations" Location ||--}o Annotation : "annotations" Location ||--}o AttributeSpecification : "attributes" Location ||--}o Identifier : "identifiers" Location ||--}o Relationship : "qualified_relations" Location ||--}o Statement : "characterized_by" Location ||--}o Thing : "relations" Property ||--}o Annotation : "annotations" Property ||--}o AttributeSpecification : "attributes" Property ||--}o Statement : "characterized_by" Property ||--}o Thing : "relations" Relationship ||--|| Thing : "object" Relationship ||--}o Role : "roles" Role ||--}o Annotation : "annotations" Role ||--}o AttributeSpecification : "attributes" Role ||--}o Statement : "characterized_by" Role ||--}o Thing : "relations" SoftwareAgent ||--|o Location : "at_location" SoftwareAgent ||--}o Agent : "acted_on_behalf_of" SoftwareAgent ||--}o Annotation : "annotations" SoftwareAgent ||--}o AttributeSpecification : "attributes" SoftwareAgent ||--}o Identifier : "identifiers" SoftwareAgent ||--}o Relationship : "qualified_relations" SoftwareAgent ||--}o Statement : "characterized_by" SoftwareAgent ||--}o Thing : "relations" Statement ||--|| Property : "predicate" Statement ||--|| Thing : "object" Thing ||--}o Annotation : "annotations" Thing ||--}o AttributeSpecification : "attributes" Thing ||--}o Statement : "characterized_by" Thing ||--}o Thing : "relations" ThingMixin ||--}o Annotation : "annotations" ThingMixin ||--}o AttributeSpecification : "attributes" ThingMixin ||--}o Statement : "characterized_by" TransientRelationship ||--|| Thing : "object" TransientRelationship ||--}o Role : "roles" ValueSpecification ||--}o Annotation : "annotations" ValueSpecification ||--}o AttributeSpecification : "attributes" ValueSpecification ||--}o Statement : "characterized_by" ValueSpecification ||--}o Thing : "relations"
Classes
| Class | Description |
|---|---|
| Annotation | A tag/value pair with the semantics of OWL Annotation |
| AttributeSpecification | An attribute is conceptually a thing, but it requires no dedicated identifier... |
| Identifier | An identifier is a label that uniquely identifies an item in a particular con... |
| ComputedIdentifier | An identifier that has been derived from information on the identified entity |
| Checksum | A Checksum is a value that allows to check the integrity of the contents of a... |
| IssuedIdentifier | An identifier that was issued by a particular agent with a notation that has ... |
| DOI | Digital Object Identifier (DOI; ISO 26324), an identifier system governed by ... |
| Relationship | An association class for characterizing the relation between two things with ... |
| TransientRelationship | A relationship that is valid or remains in place for a limited time |
| Statement | An RDF statement that links a predicate (a Property) with an object (a ... |
| Thing | The most basic, identifiable item |
| Activity | An activity is something that occurs over a period of time and acts upon or w... |
| Agent | Something that bears some form of responsibility for an activity taking place... |
| SoftwareAgent | Running software |
| Entity | A physical, digital, conceptual, or other kind of thing with some fixed aspec... |
| InstantaneousEvent | A moment of a transition from one particular state of the world to another |
| Location | A location can be an identifiable geographic place (ISO 19112), but it can al... |
| Property | An RDF property, a Thing used to define a predicate, for example in a `St... |
| Role | A role is the function of a resource or agent with respect to a subject, in t... |
| ValueSpecification | A Thing that is a value of some kind |
| ThingMixin | Mix-in with the common interface of Thing and AttributeSpecification |
| ValueSpecificationMixin | Mix-in for a (structured) value specification |
Slots
| Slot | Description |
|---|---|
| about | A relation of an information artifact to the subject, such as a URL identifyi... |
| acted_on_behalf_of | Assign the authority and responsibility for carrying out a specific activity ... |
| annotation_tag | A tag identifying an annotation |
| annotation_value | The actual annotation |
| annotations | A record of properties of the metadata record on a subject, a collection of t... |
| associated_with | An activity association is an assignment of responsibility to an agent for an... |
| at_location | Associate the subject with a location |
| at_time | Time at which an instanteneous event takes place or took place |
| attributed_to | Attribution is the ascribing of an entity to an agent |
| attributes | Declares a relation that associates a Thing (or another attribute) with an ... |
| broad_mappings | A list of terms from different schemas or terminology systems that have broad... |
| characterized_by | Qualifies relationships between a subject Thing and an object Thing with ... |
| close_mappings | A list of terms from different schemas or terminology systems that have close... |
| conforms_to | An established standard to which the subject conforms |
| creator | An agent responsible for making an entity |
| date_modified | Timepoint at which the subject was (last) changed, updated or modified |
| date_published | Timepoint at which the subject was (last) published |
| depends_on | The subject depends on object in some way |
| derived_from | A entity from which the subject was created through some kind of process |
| description | A free-text account of the subject |
| ended_at | End is when an activity is deemed to have been ended by some trigger |
| exact_mappings | A list of terms from different schemas or terminology systems that have ident... |
| generated_by | Identification of the process that led to the production of the subject entit... |
| identifiers | An unambiguous reference to the subject within a given context |
| informed_by | Communication is the exchange of an entity by two activities, one activity us... |
| kind | The nature of the subject |
| locator | A descriptive identifier that locates a resource within a containing resource |
| mappings | A list of terms from different schemas or terminology systems that have compa... |
| narrow_mappings | A list of terms from different schemas or terminology systems that have narro... |
| notation | String of characters such as "T58:5" or "30:4833" used to uniquely identify a... |
| object | Reference to a Thing within a Statement |
| part_of | The entity that the subject is a part of |
| parts | A related resource that is included either physically or logically in the des... |
| pid | Persistent and globally unique identifier of a Thing |
| predicate | Reference to a Property within a Statement |
| qualified_relations | Characterizes the relationship or role of an entity with respect to the subje... |
| range | Declares that the value of a Thing or AttributeSpecification are instance... |
| received_by | Indicates the person or authoritative body who has received something |
| related_mappings | A list of terms from different schemas or terminology systems that have relat... |
| relations | Declares an unqualified relation of the subject Thing to another Thing |
| roles | Describes the function of an entity or agent (object) within the scope of a r... |
| same_as | Declares that the subject and an object are equal |
| schema_agency | Name of the agency that issued an identifier |
| schema_type | State that the subject is an instance of a particular schema class |
| started_at | Start is when an activity is deemed to have been started by some trigger |
| used | An entity that was being used by an activity or in a process |
| value | Value of a thing |
| version_of | A related resource of which the described resource is a version, edition, or ... |
Enumerations
| Enumeration | Description |
|---|---|
Types
| Type | Description |
|---|---|
| Boolean | A binary (true or false) value |
| Curie | a compact URI |
| Date | a date (year, month and day) in an idealized calendar |
| DateOrDatetime | Either a date or a datetime |
| Datetime | The combination of a date and time |
| Decimal | A real number with arbitrary precision that conforms to the xsd:decimal speci... |
| Double | A real number that conforms to the xsd:double specification |
| EmailAddress | RFC 5322 compliant email address |
| Float | A real number that conforms to the xsd:float specification |
| HexBinary | hex-encoded binary data |
| Integer | An integer |
| Jsonpath | A string encoding a JSON Path |
| Jsonpointer | A string encoding a JSON Pointer |
| Ncname | Prefix part of CURIE |
| Nodeidentifier | A URI, CURIE or BNODE that represents a node in a model |
| NodeUriOrCurie | A type referencing an graph node |
| NonNegativeInteger | An integer |
| Objectidentifier | A URI or CURIE that represents an object in the model |
| Sparqlpath | A string encoding a SPARQL Property Path |
| String | A character string |
| Time | A time object represents a (local) time of day, independent of any particular... |
| Uri | a complete URI |
| Uriorcurie | a URI or a CURIE |
| W3CISO8601 | W3C variant/subset of IS08601 for specifying date(times) |
Subsets
| Subset | Description |
|---|---|