id: https://concepts.datalad.org/s/demo-rse-group/unreleased
name: demo-rse-group-schema
version: UNRELEASED
status: eunal:concept-status/DEPRECATED
title: Data models for a research software engineering group
description: |
  This schema is using the FLAT approach (Flexbile Low-complexity
  Annotation Technique) and is geared toward metadata entry and
  submission for pooling information across consortium sites and
  partners.

  It is to be taken as a demonstrator rather than a schema
  building block.

  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)

comments:
  - ALL CONTENT HERE IS UNRELEASED AND MAY CHANGE ANY TIME

license: MIT

prefixes:
  ADMS: http://www.w3.org/ns/adms#
  CiTO: http://purl.org/spar/cito/
  ISSN: http://identifiers.org/issn/
  ODRL: http://www.w3.org/ns/odrl/2/
  bibo: http://purl.org/ontology/bibo/
  # TODO preliminary definition, pointing to a future resolver
  datalad: https://pid.datalad.org/datasets/
  dash: http://datashapes.org/dash#
  dcterms: http://purl.org/dc/terms/
  dlcommonmx: https://concepts.datalad.org/s/common-mixin/unreleased/
  # TODO preliminary definition, pointing to a future resolver
  dldi: https://pid.datalad.org/distributions/
  dlfilesmx: https://concepts.datalad.org/s/files-mixin/unreleased/
  dlflat: https://concepts.datalad.org/s/flat/unreleased/
  dlflatfiles: https://concepts.datalad.org/s/flat-files/unreleased/
  dlflatpublications: https://concepts.datalad.org/s/flat-publications/unreleased/
  dlflatres: https://concepts.datalad.org/s/flat-resources/unreleased/
  dlflatsocial: https://concepts.datalad.org/s/flat-social/unreleased/
  dlflatstudy: https://concepts.datalad.org/s/flat-study/unreleased/
  dlidentifiers: https://concepts.datalad.org/s/identifiers/unreleased/
  dlprovmx: https://concepts.datalad.org/s/prov-mixin/unreleased/
  dlpublicationsmx: https://concepts.datalad.org/s/publications-mixin/unreleased/
  dlquantmx: https://concepts.datalad.org/s/quantities-mixin/unreleased/
  dlrelationsmx: https://concepts.datalad.org/s/relations-mixin/unreleased/
  dlresmx: https://concepts.datalad.org/s/resources-mixin/unreleased/
  dlschemas: https://concepts.datalad.org/s/
  dlsocialmx: https://concepts.datalad.org/s/social-mixin/unreleased/
  dlspatialmx: https://concepts.datalad.org/s/spatial-mixin/unreleased/
  dlstudymx: https://concepts.datalad.org/s/study-mixin/unreleased/
  dltemporalmx: https://concepts.datalad.org/s/temporal-mixin/unreleased/
  dlthings: https://concepts.datalad.org/s/things/v1/
  dltypes: https://concepts.datalad.org/s/types/v1/
  doi: https://doi.org/
  eunal: http://publications.europa.eu/resource/authority/
  fabio: http://purl.org/spar/fabio/
  foaf: http://xmlns.com/foaf/0.1/
  FRAPO: http://purl.org/cerif/frapo/
  geodata: http://sws.geonames.org/
  linkml: https://w3id.org/linkml/
  marcrel: http://id.loc.gov/vocabulary/relators/
  nfo: http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#
  obo: http://purl.obolibrary.org/obo/
  orcid: https://orcid.org/
  owl: http://www.w3.org/2002/07/owl#
  prov: http://www.w3.org/ns/prov#
  rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
  rdfs: http://www.w3.org/2000/01/rdf-schema#
  ror: https://ror.org/
  rrid: "https://scicrunch.org/resolver/RRID:"
  schema: http://schema.org/
  sh: http://www.w3.org/ns/shacl#
  shaclvue: https://concepts.datalad.org/ns/shaclvue/
  sio: http://semanticscience.org/resource/
  skos: http://www.w3.org/2004/02/skos/core#
  spdx: http://spdx.org/rdf/terms#
  spdxlic: https://spdx.org/licenses/
  vcard: http://www.w3.org/2006/vcard/ns#
  w3ctr: https://www.w3.org/TR/
  xsd: http://www.w3.org/2001/XMLSchema#
  xyzrse: https://concepts.datalad.org/s/demo-rse-group/unreleased/
  xyzrsens: https://concepts.datalad.org/s/demo-rse-group/ns/

default_prefix: xyzrse

emit_prefixes:
  - dldi
  - dlcommonmx
  - dlfilesmx
  - dlflat
  - dlflatfiles
  - dlflatres
  - dlflatpublications
  - dlflatsocial
  - dlflatstudy
  - dlidentifiers
  - dlprovmx
  - dlpublicationsmx
  - dlquantmx
  - dlrelationsmx
  - dlresmx
  - dlspatialmx
  - dlsocialmx
  - dlstudymx
  - dltemporalmx
  - dlthings
  - dltypes
  - rdf
  - rdfs
  - skos
  - w3ctr
  - xsd
  # a bunch more that are not needed for the structural aspects
  # of the schema, but for records using the schema
  - ISSN
  - bibo
  - datalad
  - dcterms
  - dldi
  - doi
  - geodata
  - obo
  - orcid
  - ror
  - rrid
  - schema
  - shaclvue
  - sio
  - xyzrsens

imports:
  - dlschemas:flat-files/unreleased
  - dlschemas:flat-publications/unreleased
  - dlschemas:flat-resources/unreleased
  - dlschemas:flat-social/unreleased
  - dlschemas:flat-study/unreleased
  - dlschemas:prov-mixin/unreleased

slots:
  application_deadline:
    title: Application deadline
    description: >-
      The date by which an application, for example a job application,
      a fellowship application or a grant application, has to be submitted
      if it is to be considered for acceptance or funding.
    range: W3CISO8601

  distributions:
    title: Distributions
    description: >-
      Available distributions of the document
    range: XYZDistribution
    multivalued: true
    exact_mappings:
      - dcat:distribution
    broad_mappings:
      - sio:SIO_000341

  entity:
    description: >-
      An entity is a physical, digital, conceptual, or other kind of
      thing with some fixed aspects; entities may be real or imaginary.
    range: Thing
    notes:
      - This property exists, because in some cases the needs to be
        an `object` and an additional property that broadly use a
        range `Thing`. The concrete, initial use case was PROV's
        Communication.

  depiction:
    title: Depiction
    description: >-
      An image, or photograph information, or other visualization that
      annotates some aspect of the subject (e.g., a digital image of a
      portrait of a person).
    range: Thing
    exact_mappings:
      - foaf:depiction
    narrow_mappings:
      - vcard:photo


classes:
  # Classes here are grouped by their nature:
  # - Things with a provenance interface
  # - Thing that are "classifiers" (i.e., tags) without a provenance interface
  # - Non-Things, such as association classes
  #
  # otherwise the order is alphanumeric

  #
  #Things with a provenance interface
  #
  XYZCompetition:
    is_a: FlatThing
    mixins:
      - ActivityMixin
    title: Competition
    description: >-
      A process where multiple agents compete for a resource, such as funding,
      recognition, or participation.
    slots:
      - about
      - application_deadline
      - kind
      - title
    slot_usage:
      kind:
        range: XYZCompetitionType
      about:
        recommended: true
        title: Topic(s)
        description: >-
          Topics related to this competition.
        range: XYZTopic
        multivalued: true
      associated_with:
        range: XYZAssociation
        multivalued: true
        inlined_as_list: true
      informed_by:
        range: XYZCommunication
        multivalued: true
        inlined_as_list: true
      ended:
        title: End
        description: >-
          The conclusion of the competition, typically the point of decision-making, or
          announcement of the winners.
        range: XYZEnd
      influenced_by:
        range: XYZInfluence
        multivalued: true
        inlined_as_list: true
    narrow_mappings:
      - FRAPO:FundingProgramme

  XYZDataset:
    is_a: Dataset
    title: Dataset
    mixins:
      - EntityMixin
    description: >-
      A collection of data, published or curated by a single agent. This is a
      conceptual entity. A single dataset might be available in more than
      one representation, with differing schematic layouts, formats, and
      serializations.
    slots:
      - rules
    slot_usage:
      part_of:
        range: XYZDataset
        multivalued: true
      rules:
        range: XYZRule
        multivalued: true
      attributed_to:
        title: Contributors
        multivalued: true
        inlined_as_list: true
        range: XYZAttribution
      generated_by:
        range: XYZGeneration
        multivalued: true
        inlined_as_list: true
      derived_from:
        range: XYZDerivation
        multivalued: true
        inlined_as_list: true
      revision_of:
        range: XYZRevision
      influenced_by:
        range: XYZInfluence
        multivalued: true
        inlined_as_list: true

  XYZDistribution:
    is_a: Distribution
    mixins:
      - EntityMixin
    title: Distribution
    description: >-
      A specific representation of a data item, which may come in the form of an electronic file, or an archive or directory of many files.
    slots:
      - conforms_to
      - rules
    slot_usage:
      kind:
        range: XYZDataType
      distribution_of:
        multivalued: true
      rules:
        range: XYZRule
        multivalued: true
      conforms_to:
        range: XYZConvention
        multivalued: true
      generated_by:
        range: XYZGeneration
        multivalued: true
        inlined_as_list: true
      influenced_by:
        range: XYZInfluence
        multivalued: true
        inlined_as_list: true

  XYZDocument:
    is_a: Document
    mixins:
      - EntityMixin
    title: Document
    description: >-
      A conceptual entity representing things which a, broadly conceived, "documents. This includes non-textual things like images. A conceputal document is to be distinguished from its physical, or electronic distributions.
    slots:
      - rules
      - distributions
    slot_usage:
      kind:
        title: Document type
        description: >-
          The type of this document, e.g. journal article, book, webpage
        range: XYZBibliographicType
      part_of:
        multivalued: true
      rules:
        range: XYZRule
        multivalued: true
      attributed_to:
        title: Contributors
        multivalued: true
        inlined_as_list: true
        range: XYZAttribution
      generated_by:
        range: XYZGeneration
        multivalued: true
        inlined_as_list: true
      derived_from:
        range: XYZDerivation
        multivalued: true
        inlined_as_list: true
      revision_of:
        range: XYZRevision
      influenced_by:
        range: XYZInfluence
        multivalued: true
        inlined_as_list: true

  XYZGrant:
    is_a: Grant
    mixins:
      - EntityMixin
    title: Grant
    description: >-
      A grant, typically financial or otherwise quantifiable, resources.
    slots:
      - rules
    slot_usage:
      part_of:
        range: XYZGrant
        multivalued: true
      rules:
        range: XYZRule
      attributed_to:
        multivalued: true
        inlined_as_list: true
        range: XYZAttribution
      revision_of:
        range: XYZRevision
      influenced_by:
        range: XYZInfluence
        multivalued: true
        inlined_as_list: true

  XYZInstrument:
    is_a: Instrument
    mixins:
      - EntityMixin
    title: Instrument
    description: >-
      A thing that enables an agent to perform an action. This is typically a device (e.g., a machine to perform a particular type of measurement), but it can also be a questionnaire that is used to perform a particular kind of assessment. An instrument is typically not a "reagent".
    slots:
      - part_of
      - rules
    slot_usage:
      kind:
        title: Instrument type
        description: >-
          The type of this instrument, e.g. microscope, software, chainsaw
        range: XYZInstrumentType
      part_of:
        range: XYZInstrument
        multivalued: true
      rules:
        range: XYZRule
        multivalued: true
      attributed_to:
        range: XYZAttribution
        multivalued: true
        inlined_as_list: true
      generated_by:
        range: XYZGeneration
        multivalued: true
        inlined_as_list: true
      revision_of:
        range: XYZRevision
      alternate_of:
        range: FlatThing
        multivalued: true
      specialization_of:
        range: FlatThing
        multivalued: true
      influenced_by:
        range: XYZInfluence
        multivalued: true
        inlined_as_list: true

  XYZOrganization:
    is_a: Organization
    mixins:
      - AgentMixin
    title: Organization
    description: >-
      A social or legal institution such as a company, a society, or a university.
    slot_usage:
      part_of:
        description: >-
          An organization that the subject is part of.
        range: XYZOrganization
        multivalued: true
      delegated_by:
        range: XYZDelegation
        multivalued: true
        inlined_as_list: true
      influenced_by:
        range: XYZInfluence
        multivalued: true
        inlined_as_list: true

  XYZPerson:
    is_a: Person
    mixins:
      - AgentMixin
    title: Person
    description: >-
      Person agents are people, alive, dead, or fictional.
    slots:
      - nickname
      - depiction
    slot_usage:
      depiction:
        title: Photo
      delegated_by:
        range: XYZDelegation
        multivalued: true
        inlined_as_list: true
      influenced_by:
        range: XYZInfluence
        multivalued: true
        inlined_as_list: true

  XYZProject:
    is_a: Project
    title: Project
    mixins:
      - ActivityMixin
    description: >-
      A collective endeavour of some kind. Typically it is a planned process that is undertaken or attempted to meet some requirement, or to achieve a particular goal.
    slots:
      - part_of
    slot_usage:
      part_of:
        range: XYZProject
        multivalued: true
      associated_with:
        range: XYZAssociation
        multivalued: true
        inlined_as_list: true
      used:
        range: XYZUsage
        multivalued: true
        inlined_as_list: true
      informed_by:
        range: XYZCommunication
        multivalued: true
        inlined_as_list: true
      started:
        title: Start
        range: XYZStart
      ended:
        title: End
        range: XYZEnd
      influenced_by:
        range: XYZInfluence
        multivalued: true
        inlined_as_list: true

  XYZPublication:
    is_a: Publication
    mixins:
      - EntityMixin
    title: Publication
    description: >-
      A resource that is the output of a publishing process.
    slots:
      - doi
      - rules
    slot_usage:
      # this is here and placed first as a mere convenience. The "proper" way is to provide
      # a `DOI` identifier
      doi:
        recommended: true
        title: DOI
      kind:
        title: Publication type
        description: >-
          The type of this publication, e.g. journal article, book, webpage
        range: XYZBibliographicType
      title:
        description: >-
          The full title of the publication.
        required: false
      description:
        title: Abstract
      published_at:
        range: XYZPublicationVenue
      locator:
        title: Location within publication venue
        description: >-
          A descriptive identifier that the publication within the
          venue it was published at. For a journal article, this would
          be a volume and/or page range. Format according to the conventions
          of the publication venue.
      about:
        recommended: true
        title: Topic(s)
        description: >-
          Topics covered by this publication.
        range: XYZTopic
        multivalued: true
      date_published:
        range: W3CISO8601
        description: >-
          The date when a publication became available at the publication venue.
      rules:
        range: XYZRule
      attributed_to:
        multivalued: true
        inlined_as_list: true
        title: Contributors
        range: XYZAttribution
      generated_by:
        range: XYZGeneration
        multivalued: true
        inlined_as_list: true
      revision_of:
        range: XYZRevision
      influenced_by:
        range: XYZInfluence
        multivalued: true
        inlined_as_list: true


  # Thing that are "classifiers" (i.e., tags) without a provenance interface
  #
  XYZAgentRole:
    is_a: FlatThing
    title: Agent role
    description: >-
      A role is the function of an agent with respect to a subject,
      in the context of an attribution.
    slots:
      - name
    broad_mappings:
      - prov:Role
      - dcat:Role

  XYZBibliographicType:
    is_a: FlatThing
    title: Bibliographic type
    description: >-
      Type of a publication or document, e.g., journal article, book, or webpage.

  XYZCompetitionType:
    is_a: FlatThing
    title: Competition type
    description: >-
      Type of a competitions, e.g., call for proposals, horse race, job opening.

  XYZConcept:
    is_a: FlatThing
    title: Concept
    description: >-
      An idea or notion; a unit of thought.

      In the context of a study, this can be a tag associated with a
      categorical, independent variable in a study design, an
      investigative role (e.g., treatments), or an organizational
      nature (e.g., site labels), or a dependent or outcome variable.

      `Concept` is related to `Topic`. However a concept is more focused
      and more clearly delineated in comparison.
    comments:
      - The relationship of a focused concept with the broader concept
        can be described via `broader_mappings`.
    slots:
      - title

  XYZConvention:
    is_a: Convention
    title: Convention
    description: >-
      A set of agreed, stipulated, or generally accepted standards, norms,
      social norms, or criteria, often taking the form of a custom.

  XYZDataType:
    is_a: FlatThing
    title: Data type or format
    description: >-
      Type of an data item.
    slots:
      - version_of
    slot_usage:
      version_of:
        title: Variant of
        range: XYZDataType
    broad_mappings:
      - dcterms:format
    narrow_mappings:
      # Electronic File Format
      - obo:NCIT_C171252
      # Data Type
      - obo:NCIT_C42645
      # Electronic File Content Type
      - obo:NCIT_C172272

  XYZInstrumentType:
    is_a: FlatThing
    title: Instrument type
    description: >-
      Type of an instrument.

  XYZObjective:
    is_a: FlatThing
    title: Objective
    description: >-
      A proposition that indicates a planned or anticipated outcome.
    slots:
      - title
      - part_of
      - depends_on
    slot_usage:
      part_of:
        range: XYZObjective
        multivalued: true
      depends_on:
        range: XYZObjective

  XYZPublicationVenue:
    is_a: FlatThing
    title: Publication venue
    description: >-
      "Place" of a publication, e.g., a journal, a website, an edited collection.
    slots:
      - title
      - kind
    slot_usage:
      title:
        description: >-
          The full title of the publication.
        required: false
      kind:
        title: Publication venue type
        description: >-
          The type of this publication venue, e.g. journal article, book, webpage
        range: XYZBibliographicType

  XYZQuality:
    is_a: FlatThing
    title: Quality
    description: >-
      A quality is an attribute that is intrinsically associated with its
      bearer (or its parts), but whose presence/absence and observed/measured
      value may vary.

  XYZRule:
    is_a: FlatThing
    title: Rule
    description: >-
      Permissions, prohibitions, obligatations or other rights/policies.
      This can be a standard license, a custom usage agreement, or a
      codified policy.
    slots:
      # title because MIH thinks of these as documents
      - title
      # licenses often have them
      - short_name

  XYZTopic:
    is_a: FlatThing
    title: Topic
    description: >-
      Topic a subject is about, e.g., a particular research question or domain
    slots:
      - part_of
    slot_usage:
      part_of:
        range: XYZTopic
        multivalued: true

  #
  # Non-Things, such as association classes
  #
  ORCID:
    is_a: IssuedIdentifier
    description: >-
      Unique persistent identifier for a person, provided by the Open Researcher
      and Contributor ID (ORCID) organisation.
    slot_usage:
      creator:
        ifabsent: uriorcurie(ror:04fa4r544)
        description: By default, the creator is identified as "ror:04fa4r544".
      notation:
        description: >-
          The identifier notation is specified without a URL-prefix,
          or a `orcid:` prefix.
        pattern: '^\d{4}-\d{4}-\d{4}-\d{3}[0-9X]{1}$'
      schema_agency:
        ifabsent: string(Open Researcher and Contributor ID)
        description: >-
          By default, the schema agency is identified as `Open Researcher
          and Contributor ID`.
    unique_keys:
      value:
        description: The DOI notation is globally unique within the scope of DOIs
        unique_key_slots:
          - notation
    exact_mappings:
      - obo:IAO_0000708

  XYZAgentInfluence:
    # this is not derived from AgentInfluence, because we only need it for UI
    # purposed. it shows up as an alternative wherever XYZInfluence is the
    # range (e.g. influenced_by). it provides an effective way to constrain
    # the space for possible object and roles instances. other than that
    # it does not change the semantics or structure compared to XYZInfluence,
    # hence any instance continues to be fully compatible with no loss of
    # information when "seen" through the interface of XYZInfluence
    is_a: XYZInfluence
    description: >-
      Influence is the capacity of an agent to have an effect on the character,
      development, or behavior of a subject.
    slot_usage:
      object:
        title: Agent
        any_of:
          - range: XYZPerson
          - range: XYZOrganization
        annotations:
          dash:propertyRole: dash:KeyInfoRole
      roles:
        title: Roles
        range: XYZAgentRole
      characterized_by:
        range: FlatStatement
      attributes:
        range: FlatAttributeSpecification

  XYZAssociation:
    is_a: Association
    description: >-
      The assignment of responsibility to an agent for an activity,
      indicating that the agent had a role in the activity.
    slot_usage:
      object:
        title: Agent
        any_of:
          - range: XYZPerson
          - range: XYZOrganization
        annotations:
          dash:propertyRole: dash:KeyInfoRole
      roles:
        title: Roles
        range: XYZAgentRole
      started:
        range: XYZStart
      ended:
        range: XYZEnd
      characterized_by:
        range: FlatStatement
      attributes:
        range: FlatAttributeSpecification

  XYZAttribution:
    is_a: Attribution
    description: >-
      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.
    slot_usage:
      object:
        any_of:
          - range: XYZPerson
          - range: XYZOrganization
        annotations:
          dash:propertyRole: dash:KeyInfoRole
      roles:
        range: XYZAgentRole
        multivalued: true
      characterized_by:
        range: FlatStatement
      attributes:
        range: FlatAttributeSpecification

  XYZCommunication:
    is_a: Communication
    title: Communication
    description: >-
      The exchange of an entity by two activities, one activity using the entity
      generated by the other. This implies a dependency of the subject
      activity on the associated activity.
    slots:
      - entity
    slot_usage:
      object:
        annotations:
          dash:propertyRole: dash:KeyInfoRole
      entity:
        description: >-
          An entity used by the subject, and produced by the associated
          activity.
      characterized_by:
        range: FlatStatement
      attributes:
        range: FlatAttributeSpecification

  XYZDelegation:
    is_a: Delegation
    title: Delegation
    description: >-
      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.
    slot_usage:
      object:
        any_of:
          - range: XYZPerson
          - range: XYZOrganization
        annotations:
          dash:propertyRole: dash:KeyInfoRole
      roles:
        range: XYZAgentRole
      started:
        range: XYZStart
      ended:
        range: XYZEnd
      characterized_by:
        range: FlatStatement
      attributes:
        range: FlatAttributeSpecification

  XYZDerivation:
    is_a: Derivation
    description: >-
      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.
    slot_usage:
      object:
        annotations:
          dash:propertyRole: dash:KeyInfoRole
      generated_by:
        range:  XYZGeneration
      used:
        range: XYZUsage
      characterized_by:
        range: FlatStatement
      attributes:
        range: FlatAttributeSpecification

  XYZEnd:
    is_a: End
    description: >-
      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.
    slot_usage:
      at_time:
        annotations:
          dash:propertyRole: dash:KeyInfoRole
      characterized_by:
        range: FlatStatement
      attributes:
        range: FlatAttributeSpecification

  XYZGeneration:
    is_a: Generation
    description: >-
      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.
    slot_usage:
      object:
        annotations:
          dash:propertyRole: dash:KeyInfoRole
      characterized_by:
        range: FlatStatement
      attributes:
        range: FlatAttributeSpecification

  XYZInfluence:
    is_a: Influence
    description: >-
      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.
    slots:
      - ended
      - started
    slot_usage:
      object:
        annotations:
          dash:propertyRole: dash:KeyInfoRole
      started:
        range: XYZStart
      ended:
        range: XYZEnd
      characterized_by:
        range: FlatStatement
      attributes:
        range: FlatAttributeSpecification
    comments:
      - This is effectively a `TimeLimitedInfluence` that could migrated
        upstream.


  XYZObjectiveInfluence:
    # see XYZAgentRole for rationale on deriving from XYZInfluence rather
    # than EntityInfluence
    is_a: XYZInfluence
    description: >-
      Influence of an objective on the subject.
    slot_usage:
      object:
        title: Objective
        range: XYZObjective
        annotations:
          dash:propertyRole: dash:KeyInfoRole
      roles:
        title: Roles
        # TODO adopt some kind of classification of objective types
        # (longterm goal, deliverable, ambition, contractual obligation, ...)
        # range: XYZObjectiveRole

  XYZRevision :
    is_a: Revision
    description: >-
      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.
    slot_usage:
      object:
        annotations:
          dash:propertyRole: dash:KeyInfoRole
      generated_by:
        range:  XYZGeneration
      used:
        range: XYZUsage
      characterized_by:
        range: FlatStatement
      attributes:
        range: FlatAttributeSpecification

  XYZStart:
    is_a: Start
    description: >-
      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.
    slot_usage:
      at_time:
        annotations:
          dash:propertyRole: dash:KeyInfoRole
      characterized_by:
        range: FlatStatement
      attributes:
        range: FlatAttributeSpecification

  XYZUsage:
    is_a: Usage
    description: >-
      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.
    slot_usage:
      object:
        annotations:
          dash:propertyRole: dash:KeyInfoRole
      characterized_by:
        range: FlatStatement
      attributes:
        range: FlatAttributeSpecification
