name: things-schema
description: "This schema provides a generic [`Thing`](Thing) concept as a basic building\
  \ block.\nKey concepts of this schema are that any `Thing`\n\n- has a unique identifier\
  \ ([`pid`](pid))\n- can be mapped to arbitrary external schemas and terminologies\
  \ to maximize\n  semantic alignment with existing metadata ecosystems\n  (see [`mappings`](mappings))\n\
  - can be further described by attributes ([`attributes`](attributes))\n  and qualified\
  \ relations to other \"things\"\n  ([`characterized_by`](characterized_by)),\n \
  \ without prescribing a particular vocabulary\n- can be associated with a specialized\
  \ schema class for enabling detailed\n  validation and precise data transformations\
  \ ([`schema_type`](schema_type))\n  without limiting the general expressiveness\
  \ to a fixed set of classes\n  available this foundational schema.\n- can be associated\
  \ with any number of ([`identifiers`](identifiers).\n\nMore information on this\
  \ schema is available on a [dedicated page](about).\nEach class comes with dedicated\
  \ examples that exemplify its use. A good\nstarting point are the [examples of the\
  \ `Thing` class](Thing#examples).\n\nAlthough this generic schema could be used\
  \ directly, it is meant to be used\nas a foundational building block for more targeted\
  \ schemas. Therefore, the\nschema does not define common slots like `name`, or `title`,\
  \ and leaves\nthis to more targeted schemas to decide if such slots are needed,\
  \ and how they\nshould be defined. The envisioned use and reuse of this schema is\
  \ to import\nit and built targeted derivatives of `Thing` and other classes provided\
  \ here.\nSee the [things-data schema](/s/things-data) for an example that is built\
  \ on\nthis schema.\n\nThis schema also incorporates a few fundamental type definitions,\
  \ such as\n[`HexBinary`](HexBinary) (for checksum-like identifiers), and\n[`NonNegativeInteger`](NonNegativeInteger)\
  \ for counts.\n\nThe schema definition is available as\n\n- [JSON-LD context](../v2.context.jsonld)\n\
  - [LinkML YAML](../v2.yaml)\n- [LinkML YAML (static/resolved)](../v2.static.yaml)\n\
  - [OWL TTL](../v2.owl.ttl)\n- [SHACL TTL](../v2.shacl.ttl)\n\nUpcoming changes to\
  \ this schema may be available in an [(unreleased)\ndevelopment version](../../things/unreleased).\n\
  \n## Upgrading vom Version 1\n\nMost changes to the schema have been additions and\
  \ should not break existing\nuse cases. However, the following changes are backward\
  \ incompatible\n\n- All `sh:order` slot annotations have been removed.\n- The `ADMS`\
  \ vocabulary is no longer used and the prefix definition was removed.\n- The obsolete\
  \ `dltypes` prefix has been removed.\n- The `exthisns` prefix definition was removed.\
  \ The `ex` prefix continues to be\n  available.\n\nA dedicated `AnnotationTag` class\
  \ has been added, and is used as the `range`\nof the `annotation_tag` slot.\n"
title: Generic schema for an arbitrarily detailed description of "things"
status: eunal:concept-status/DRAFT
id: https://concepts.datalad.org/s/things/v2
version: 2.0.0
license: MIT
prefixes:
  bibo:
    prefix_prefix: bibo
    prefix_reference: http://purl.org/ontology/bibo/
  dash:
    prefix_prefix: dash
    prefix_reference: http://datashapes.org/dash#
  dcat:
    prefix_prefix: dcat
    prefix_reference: http://www.w3.org/ns/dcat#
  dcterms:
    prefix_prefix: dcterms
    prefix_reference: http://purl.org/dc/terms/
  dlschemas:
    prefix_prefix: dlschemas
    prefix_reference: https://concepts.datalad.org/s/
  dlthings:
    prefix_prefix: dlthings
    prefix_reference: https://concepts.datalad.org/s/things/v2/
  eunal:
    prefix_prefix: eunal
    prefix_reference: http://publications.europa.eu/resource/authority/
  ex:
    prefix_prefix: ex
    prefix_reference: http://example.org/
  linkml:
    prefix_prefix: linkml
    prefix_reference: https://w3id.org/linkml/
  obo:
    prefix_prefix: obo
    prefix_reference: http://purl.obolibrary.org/obo/
  owl:
    prefix_prefix: owl
    prefix_reference: http://www.w3.org/2002/07/owl#
  rdf:
    prefix_prefix: rdf
    prefix_reference: http://www.w3.org/1999/02/22-rdf-syntax-ns#
  rdfs:
    prefix_prefix: rdfs
    prefix_reference: http://www.w3.org/2000/01/rdf-schema#
  schema:
    prefix_prefix: schema
    prefix_reference: http://schema.org/
  sh:
    prefix_prefix: sh
    prefix_reference: http://www.w3.org/ns/shacl#
  sio:
    prefix_prefix: sio
    prefix_reference: http://semanticscience.org/resource/
  skos:
    prefix_prefix: skos
    prefix_reference: http://www.w3.org/2004/02/skos/core#
  xsd:
    prefix_prefix: xsd
    prefix_reference: http://www.w3.org/2001/XMLSchema#
  shex:
    prefix_prefix: shex
    prefix_reference: http://www.w3.org/ns/shex#
emit_prefixes:
- dlthings
- rdf
- rdfs
- skos
- xsd
default_prefix: dlthings
types:
  EmailAddress:
    name: EmailAddress
    description: RFC 5322 compliant email address
    notes:
    - The validation regex is taken from https://stackoverflow.com/a/201378
    - The regex is single-quoted for YAML encoding, hence all inner "'" have been
      doubled
    from_schema: https://concepts.datalad.org/s/things/v2
    typeof: string
    base: str
    uri: dlthings:EmailAddress
    pattern: (?:[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\.)+[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[A-Za-z0-9-]*[A-Za-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
  HexBinary:
    name: HexBinary
    description: hex-encoded binary data.
    from_schema: https://concepts.datalad.org/s/things/v2
    typeof: string
    base: str
    uri: xsd:hexBinary
    pattern: ^[a-fA-F0-9]+$
  NodeUriOrCurie:
    name: NodeUriOrCurie
    description: A type referencing an graph node. This is like `uriorcurie`, but
      in an RDF export leads to the desirable `rdf.type` declaration, rather then
      an `rdf.literal` of the corresponding URI.
    from_schema: https://concepts.datalad.org/s/things/v2
    typeof: uriorcurie
    base: str
    uri: rdfs:Resource
  NonNegativeInteger:
    name: NonNegativeInteger
    description: An integer
    notes:
    - Integer with minimum (inclusive) value of zero, i.e. the standard mathematical
      concept of the non-negative integers.
    from_schema: https://concepts.datalad.org/s/things/v2
    broad_mappings:
    - schema:Integer
    typeof: integer
    base: int
    uri: xsd:nonNegativeInteger
  string:
    name: string
    description: A character string
    notes:
    - In RDF serializations, a slot with range of string is treated as a literal or
      type xsd:string.   If you are authoring schemas in LinkML YAML, the type is
      referenced with the lower case "string".
    from_schema: https://w3id.org/linkml/types
    exact_mappings:
    - schema:Text
    base: str
    uri: xsd:string
  integer:
    name: integer
    description: An integer
    notes:
    - If you are authoring schemas in LinkML YAML, the type is referenced with the
      lower case "integer".
    from_schema: https://w3id.org/linkml/types
    exact_mappings:
    - schema:Integer
    base: int
    uri: xsd:integer
  boolean:
    name: boolean
    description: A binary (true or false) value
    notes:
    - If you are authoring schemas in LinkML YAML, the type is referenced with the
      lower case "boolean".
    from_schema: https://w3id.org/linkml/types
    exact_mappings:
    - schema:Boolean
    base: Bool
    uri: xsd:boolean
    repr: bool
  float:
    name: float
    description: A real number that conforms to the xsd:float specification
    notes:
    - If you are authoring schemas in LinkML YAML, the type is referenced with the
      lower case "float".
    from_schema: https://w3id.org/linkml/types
    exact_mappings:
    - schema:Float
    base: float
    uri: xsd:float
  double:
    name: double
    description: A real number that conforms to the xsd:double specification
    notes:
    - If you are authoring schemas in LinkML YAML, the type is referenced with the
      lower case "double".
    from_schema: https://w3id.org/linkml/types
    close_mappings:
    - schema:Float
    base: float
    uri: xsd:double
  decimal:
    name: decimal
    description: A real number with arbitrary precision that conforms to the xsd:decimal
      specification
    notes:
    - If you are authoring schemas in LinkML YAML, the type is referenced with the
      lower case "decimal".
    from_schema: https://w3id.org/linkml/types
    broad_mappings:
    - schema:Number
    base: Decimal
    uri: xsd:decimal
  time:
    name: time
    description: A time object represents a (local) time of day, independent of any
      particular day
    notes:
    - URI is dateTime because OWL reasoners do not work with straight date or time
    - If you are authoring schemas in LinkML YAML, the type is referenced with the
      lower case "time".
    from_schema: https://w3id.org/linkml/types
    exact_mappings:
    - schema:Time
    base: XSDTime
    uri: xsd:time
    repr: str
  date:
    name: date
    description: a date (year, month and day) in an idealized calendar
    notes:
    - URI is dateTime because OWL reasoners don't work with straight date or time
    - If you are authoring schemas in LinkML YAML, the type is referenced with the
      lower case "date".
    from_schema: https://w3id.org/linkml/types
    exact_mappings:
    - schema:Date
    base: XSDDate
    uri: xsd:date
    repr: str
  datetime:
    name: datetime
    description: The combination of a date and time
    notes:
    - If you are authoring schemas in LinkML YAML, the type is referenced with the
      lower case "datetime".
    from_schema: https://w3id.org/linkml/types
    exact_mappings:
    - schema:DateTime
    base: XSDDateTime
    uri: xsd:dateTime
    repr: str
  date_or_datetime:
    name: date_or_datetime
    description: Either a date or a datetime
    notes:
    - If you are authoring schemas in LinkML YAML, the type is referenced with the
      lower case "date_or_datetime".
    from_schema: https://w3id.org/linkml/types
    base: str
    uri: linkml:DateOrDatetime
    repr: str
  uriorcurie:
    name: uriorcurie
    description: a URI or a CURIE
    notes:
    - If you are authoring schemas in LinkML YAML, the type is referenced with the
      lower case "uriorcurie".
    from_schema: https://w3id.org/linkml/types
    base: URIorCURIE
    uri: xsd:anyURI
    repr: str
  curie:
    name: curie
    conforms_to: https://www.w3.org/TR/curie/
    description: a compact URI
    notes:
    - If you are authoring schemas in LinkML YAML, the type is referenced with the
      lower case "curie".
    comments:
    - in RDF serializations this MUST be expanded to a URI
    - in non-RDF serializations MAY be serialized as the compact representation
    from_schema: https://w3id.org/linkml/types
    base: Curie
    uri: xsd:string
    repr: str
  uri:
    name: uri
    conforms_to: https://www.ietf.org/rfc/rfc3987.txt
    description: a complete URI
    notes:
    - If you are authoring schemas in LinkML YAML, the type is referenced with the
      lower case "uri".
    comments:
    - in RDF serializations a slot with range of uri is treated as a literal or type
      xsd:anyURI unless it is an identifier or a reference to an identifier, in which
      case it is translated directly to a node
    from_schema: https://w3id.org/linkml/types
    close_mappings:
    - schema:URL
    base: URI
    uri: xsd:anyURI
    repr: str
  ncname:
    name: ncname
    description: Prefix part of CURIE
    notes:
    - If you are authoring schemas in LinkML YAML, the type is referenced with the
      lower case "ncname".
    from_schema: https://w3id.org/linkml/types
    base: NCName
    uri: xsd:string
    repr: str
  objectidentifier:
    name: objectidentifier
    description: A URI or CURIE that represents an object in the model.
    notes:
    - If you are authoring schemas in LinkML YAML, the type is referenced with the
      lower case "objectidentifier".
    comments:
    - Used for inheritance and type checking
    from_schema: https://w3id.org/linkml/types
    base: ElementIdentifier
    uri: shex:iri
    repr: str
  nodeidentifier:
    name: nodeidentifier
    description: A URI, CURIE or BNODE that represents a node in a model.
    notes:
    - If you are authoring schemas in LinkML YAML, the type is referenced with the
      lower case "nodeidentifier".
    from_schema: https://w3id.org/linkml/types
    base: NodeIdentifier
    uri: shex:nonLiteral
    repr: str
  jsonpointer:
    name: jsonpointer
    conforms_to: https://datatracker.ietf.org/doc/html/rfc6901
    description: A string encoding a JSON Pointer. The value of the string MUST conform
      to JSON Point syntax and SHOULD dereference to a valid object within the current
      instance document when encoded in tree form.
    notes:
    - If you are authoring schemas in LinkML YAML, the type is referenced with the
      lower case "jsonpointer".
    from_schema: https://w3id.org/linkml/types
    base: str
    uri: xsd:string
    repr: str
  jsonpath:
    name: jsonpath
    conforms_to: https://www.ietf.org/archive/id/draft-goessner-dispatch-jsonpath-00.html
    description: A string encoding a JSON Path. The value of the string MUST conform
      to JSON Point syntax and SHOULD dereference to zero or more valid objects within
      the current instance document when encoded in tree form.
    notes:
    - If you are authoring schemas in LinkML YAML, the type is referenced with the
      lower case "jsonpath".
    from_schema: https://w3id.org/linkml/types
    base: str
    uri: xsd:string
    repr: str
  sparqlpath:
    name: sparqlpath
    conforms_to: https://www.w3.org/TR/sparql11-query/#propertypaths
    description: A string encoding a SPARQL Property Path. The value of the string
      MUST conform to SPARQL syntax and SHOULD dereference to zero or more valid objects
      within the current instance document when encoded as RDF.
    notes:
    - If you are authoring schemas in LinkML YAML, the type is referenced with the
      lower case "sparqlpath".
    from_schema: https://w3id.org/linkml/types
    base: str
    uri: xsd:string
    repr: str
slots:
  about:
    name: about
    description: A relation of an information artifact to the subject, such as a URL
      identifying the topic of a document.
    title: About
    from_schema: https://concepts.datalad.org/s/things/v2
    exact_mappings:
    - schema:about
    - obo:IAO_0000136
    slot_uri: dcterms:subject
    range: Thing
  annotations:
    name: annotations
    description: A record of properties of the metadata record on a subject, a collection
      of tag/text tuples with the semantics of OWL Annotation.
    title: Annotations
    from_schema: https://concepts.datalad.org/s/things/v2
    exact_mappings:
    - obo:NCIT_C44272
    slot_uri: dlthings:annotations
    range: Annotation
    multivalued: true
    inlined: true
  annotation_tag:
    name: annotation_tag
    description: A tag identifying an annotation.
    title: Tag
    from_schema: https://concepts.datalad.org/s/things/v2
    slot_uri: dlthings:annotation_tag
    range: Thing
  annotation_value:
    name: annotation_value
    description: The actual annotation.
    title: Value
    from_schema: https://concepts.datalad.org/s/things/v2
    slot_uri: dlthings:annotation_value
    range: string
  attributes:
    name: attributes
    description: 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.
    title: Attributes
    from_schema: https://concepts.datalad.org/s/things/v2
    exact_mappings:
    - sio:SIO_000008
    slot_uri: dlthings:attributes
    range: AttributeSpecification
    multivalued: true
    inlined: true
    inlined_as_list: true
  broad_mappings:
    name: broad_mappings
    description: A list of terms from different schemas or terminology systems that
      have broader meaning.
    title: Broad mappings
    from_schema: https://concepts.datalad.org/s/things/v2
    is_a: mappings
    slot_uri: skos:broadMatch
    range: uriorcurie
    multivalued: true
  characterized_by:
    name: characterized_by
    description: Qualifies relationships between a subject `Thing` and an object `Thing`
      with a `Statement` declaring a `predicate` on the nature of the relationship.
    title: Characterized by
    from_schema: https://concepts.datalad.org/s/things/v2
    exact_mappings:
    - obo:RO_0000053
    slot_uri: dlthings:characterized_by
    range: Statement
    multivalued: true
    inlined: true
    inlined_as_list: true
  close_mappings:
    name: close_mappings
    description: A list of terms from different schemas or terminology systems that
      have close meaning.
    title: Close mappings
    from_schema: https://concepts.datalad.org/s/things/v2
    is_a: mappings
    slot_uri: skos:closeMatch
    range: uriorcurie
    multivalued: true
  creator:
    name: creator
    description: An agent responsible for making an entity.
    title: Creator
    from_schema: https://concepts.datalad.org/s/things/v2
    slot_uri: dcterms:creator
    range: Thing
  defined_by:
    name: defined_by
    description: Indicate a resource defining the subject. This may be a vocabulary
      that describes the subject.
    title: Defined by
    from_schema: https://concepts.datalad.org/s/things/v2
    slot_uri: rdfs:isDefinedBy
    range: uriorcurie
  description:
    name: description
    annotations:
      dash:singleLine:
        tag: dash:singleLine
        value: false
    description: A free-text account of the subject.
    title: Description
    from_schema: https://concepts.datalad.org/s/things/v2
    close_mappings:
    - rdfs:comment
    broad_mappings:
    - obo:IAO_0000300
    slot_uri: dcterms:description
    range: string
  display_label:
    name: display_label
    description: Label that can be shown when the metadata record is displayed as
      an item.
    title: Record display label
    from_schema: https://concepts.datalad.org/s/things/v2
    slot_uri: skos:prefLabel
    range: string
  display_note:
    name: display_note
    annotations:
      dash:singleLine:
        tag: dash:singleLine
        value: false
    description: Note that can be shown when the record is displayed as an item. This
      is typically longer than a label.
    title: Record display note
    from_schema: https://concepts.datalad.org/s/things/v2
    slot_uri: skos:note
    range: string
  editorial_notes:
    name: editorial_notes
    annotations:
      dash:singleLine:
        tag: dash:singleLine
        value: false
    description: 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.
    title: Editorial note
    from_schema: https://concepts.datalad.org/s/things/v2
    slot_uri: skos:editorialNote
    range: string
    multivalued: true
  exact_mappings:
    name: exact_mappings
    description: A list of terms from different schemas or terminology systems that
      have identical meaning.
    title: Exact mappings
    from_schema: https://concepts.datalad.org/s/things/v2
    is_a: mappings
    slot_uri: skos:exactMatch
    range: uriorcurie
    multivalued: true
  identifiers:
    name: identifiers
    description: An unambiguous reference to the subject within a given context.
    title: Identifiers
    from_schema: https://concepts.datalad.org/s/things/v2
    exact_mappings:
    - schema:identifier
    slot_uri: dcterms:identifier
    range: Identifier
    multivalued: true
    inlined: true
    inlined_as_list: true
  kind:
    name: kind
    description: The nature of the subject.
    title: Kind
    comments:
    - 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.
    from_schema: https://concepts.datalad.org/s/things/v2
    exact_mappings:
    - dcterms:type
    slot_uri: dcterms:type
    range: Thing
  mappings:
    name: mappings
    description: 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.
    from_schema: https://concepts.datalad.org/s/things/v2
    slot_uri: skos:mappingRelation
    range: uriorcurie
    multivalued: true
  narrow_mappings:
    name: narrow_mappings
    description: A list of terms from different schemas or terminology systems that
      have narrower meaning.
    title: Narrow mappings
    from_schema: https://concepts.datalad.org/s/things/v2
    is_a: mappings
    slot_uri: skos:narrowMatch
    range: uriorcurie
    multivalued: true
  notation:
    name: notation
    description: String of characters such as "T58:5" or "30:4833" used to uniquely
      identify a concept within the scope of a given concept scheme.
    title: Notation
    from_schema: https://concepts.datalad.org/s/things/v2
    slot_uri: skos:notation
    range: string
  object:
    name: object
    description: Reference to a `Thing` within a `Statement`.
    title: Object
    from_schema: https://concepts.datalad.org/s/things/v2
    exact_mappings:
    - rdf:object
    slot_uri: rdf:object
    relational_role:
      text: OBJECT
      description: a slot with this role connects a relationship to its object/target
        node
      meaning: http://www.w3.org/1999/02/22-rdf-syntax-ns#object
    range: Thing
  pid:
    name: pid
    description: Persistent and globally unique identifier of a `Thing`.
    title: Persistent identifier
    from_schema: https://concepts.datalad.org/s/things/v2
    exact_mappings:
    - dcterms:identifier
    - schema:identifier
    slot_uri: dlthings:pid
    identifier: true
    range: uriorcurie
  predicate:
    name: predicate
    description: Reference to a `Property` within a `Statement`.
    title: Predicate
    from_schema: https://concepts.datalad.org/s/things/v2
    exact_mappings:
    - rdf:predicate
    slot_uri: rdf:predicate
    relational_role:
      text: PREDICATE
      description: a slot with this role connects a relationship to its predicate/property
      meaning: http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate
    range: Thing
    multivalued: false
  range:
    name: range
    description: Declares that the value of a `Thing` or `AttributeSpecification`
      are instances of a particular class.
    title: Value type (range)
    from_schema: https://concepts.datalad.org/s/things/v2
    slot_uri: rdfs:range
    range: uriorcurie
  related_mappings:
    name: related_mappings
    description: A list of terms from different schemas or terminology systems that
      have related meaning.
    title: Related mappings
    from_schema: https://concepts.datalad.org/s/things/v2
    is_a: mappings
    slot_uri: skos:relatedMatch
    range: uriorcurie
    multivalued: true
  relations:
    name: relations
    description: 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.
    title: Relations
    from_schema: https://concepts.datalad.org/s/things/v2
    exact_mappings:
    - dcat:relation
    - dcterms:relation
    slot_uri: dlthings:relation
    symmetric: true
    relational_role:
      text: OBJECT
      description: a slot with this role connects a relationship to its object/target
        node
      meaning: http://www.w3.org/1999/02/22-rdf-syntax-ns#object
    range: Thing
    multivalued: true
  schema_type:
    name: schema_type
    description: 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.
    title: Schema type
    from_schema: https://concepts.datalad.org/s/things/v2
    exact_mappings:
    - dcterms:type
    slot_uri: rdf:type
    designates_type: true
    range: NodeUriOrCurie
  unit:
    name: unit
    description: A unit of measurement is a standardized quantity of a physical quality.
    title: Unit
    from_schema: https://concepts.datalad.org/s/things/v2
    slot_uri: obo:UO_0000000
    range: uriorcurie
  value:
    name: value
    description: Value that is a direct representation of a thing.
    title: Value
    from_schema: https://concepts.datalad.org/s/things/v2
    exact_mappings:
    - rdf:value
    slot_uri: rdf:value
    relational_role:
      text: OBJECT
      description: a slot with this role connects a relationship to its object/target
        node
      meaning: http://www.w3.org/1999/02/22-rdf-syntax-ns#object
    range: string
classes:
  ThingMixin:
    name: ThingMixin
    description: 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.
    from_schema: https://concepts.datalad.org/s/things/v2
    mixin: true
    slots:
    - about
    - annotations
    - broad_mappings
    - close_mappings
    - description
    - display_label
    - display_note
    - editorial_notes
    - exact_mappings
    - identifiers
    - kind
    - attributes
    - characterized_by
    - narrow_mappings
    - related_mappings
    - schema_type
    class_uri: dlthings:ThingMixin
  ValueSpecificationMixin:
    name: ValueSpecificationMixin
    description: Mix-in for a (structured) value specification. Two slots are provided
      to define a (literal) value (`value`) and its type (`range`).
    comments:
    - 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.
    from_schema: https://concepts.datalad.org/s/things/v2
    mixin: true
    slots:
    - defined_by
    - range
    - unit
    - value
    class_uri: dlthings:ValueSpecificationMixin
  AttributeSpecification:
    name: AttributeSpecification
    description: 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.
    from_schema: https://concepts.datalad.org/s/things/v2
    exact_mappings:
    - sio:SIO_000614
    close_mappings:
    - dlthings:Thing
    mixins:
    - ThingMixin
    - ValueSpecificationMixin
    slots:
    - predicate
    slot_usage:
      about:
        name: about
        multivalued: true
      predicate:
        name: predicate
        range: Property
        required: true
    class_uri: dlthings:AttributeSpecification
  Identifier:
    name: Identifier
    description: 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.
    from_schema: https://concepts.datalad.org/s/things/v2
    exact_mappings:
    - obo:IAO_0020000
    mixins:
    - ThingMixin
    slots:
    - creator
    - notation
    slot_usage:
      notation:
        name: notation
        required: true
    class_uri: dlthings:Identifier
  Property:
    name: Property
    description: An RDF property, a `Thing` used to define a `predicate`, for example
      in a `Statement`.
    from_schema: https://concepts.datalad.org/s/things/v2
    exact_mappings:
    - rdf:Property
    is_a: Thing
    class_uri: dlthings:Property
  Statement:
    name: Statement
    description: 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`.
    from_schema: https://concepts.datalad.org/s/things/v2
    exact_mappings:
    - rdf:Statement
    slots:
    - object
    - predicate
    - annotations
    - characterized_by
    - editorial_notes
    slot_usage:
      object:
        name: object
        range: Thing
        required: true
      predicate:
        name: predicate
        range: Property
        required: true
      characterized_by:
        name: characterized_by
        description: Make statements about statement, also known as reification.
        see_also:
        - https://patterns.dataincubator.org/book/reified-statement.html
    class_uri: dlthings:Statement
  Thing:
    name: Thing
    description: 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`.
    from_schema: https://concepts.datalad.org/s/things/v2
    exact_mappings:
    - schema:Thing
    mixins:
    - ThingMixin
    slots:
    - pid
    - relations
    slot_usage:
      about:
        name: about
        multivalued: true
      relations:
        name: relations
        inlined: true
        inlined_as_list: false
    class_uri: dlthings:Thing
  ValueSpecification:
    name: ValueSpecification
    description: 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`).
    from_schema: https://concepts.datalad.org/s/things/v2
    exact_mappings:
    - obo:OBI_0001933
    is_a: Thing
    mixins:
    - ValueSpecificationMixin
    slot_usage:
      value:
        name: value
        notes:
        - It is required, because when it is not needed, `Thing` should be used as
          a type. Its absence is therefore likely a sign of an error.
        required: true
    class_uri: dlthings:ValueSpecification
  Annotation:
    name: Annotation
    description: A tag/value pair with the semantics of OWL Annotation.
    from_schema: https://concepts.datalad.org/s/things/v2
    slots:
    - annotation_tag
    - annotation_value
    slot_usage:
      annotation_tag:
        name: annotation_tag
        key: true
        range: AnnotationTag
    class_uri: dlthings:Annotation
  AnnotationTag:
    name: AnnotationTag
    description: A tag identifying an annotation.
    title: Annotation tag
    from_schema: https://concepts.datalad.org/s/things/v2
    is_a: Thing
    class_uri: dlthings:AnnotationTag
source_file: src/things/v2.yaml

