Skip to content

Class: DonationItem

Abstract base for all donation items. Never instantiated directly.

The category slot carries designates_type: true — its value (the class URI of the concrete subclass) selects which subclass schema applies. This is the LinkML mechanism for a discriminated union: category IS the type, not an attribute of the item. Grounded in schema:Product.

attribute_completeness is set by the fragment engine when the sorting episode completes. It records data quality — NOT whether the episode was complete (lifecycle_state = sorted records that). See AttributeCompletenessEnum in core.yaml for the full rationale.

The lifecycle state machine is documented in ItemLifecycleStateEnum in core.yaml. Transitions are enforced by Django model clean(). The sorting_in_progress state prevents concurrent editing of the same item by two sorters simultaneously.

  • NOTE: this is an abstract class and should not be instantiated directly

URI: schema:Product

 classDiagram
    class DonationItem
    click DonationItem href "../DonationItem/"
      DonationItem <|-- ClothingItem
        click ClothingItem href "../ClothingItem/"
      DonationItem <|-- AccessoriesItem
        click AccessoriesItem href "../AccessoriesItem/"
      DonationItem <|-- FootwearItem
        click FootwearItem href "../FootwearItem/"
      DonationItem <|-- FurnitureItem
        click FurnitureItem href "../FurnitureItem/"
      DonationItem <|-- BeddingTextilesItem
        click BeddingTextilesItem href "../BeddingTextilesItem/"
      DonationItem <|-- HouseholdItem
        click HouseholdItem href "../HouseholdItem/"
      DonationItem <|-- ElectronicsItem
        click ElectronicsItem href "../ElectronicsItem/"
      DonationItem <|-- ToysItem
        click ToysItem href "../ToysItem/"
      DonationItem <|-- SportsItem
        click SportsItem href "../SportsItem/"
      DonationItem <|-- BooksItem
        click BooksItem href "../BooksItem/"
      DonationItem <|-- StationeryItem
        click StationeryItem href "../StationeryItem/"
      DonationItem <|-- PersonalCareItem
        click PersonalCareItem href "../PersonalCareItem/"
      DonationItem <|-- MobilityAidsItem
        click MobilityAidsItem href "../MobilityAidsItem/"
      DonationItem <|-- BabyInfantItem
        click BabyInfantItem href "../BabyInfantItem/"
      DonationItem <|-- FoodItem
        click FoodItem href "../FoodItem/"
      DonationItem <|-- OtherItem
        click OtherItem href "../OtherItem/"

      DonationItem : attribute_completeness





        DonationItem --> "0..1" AttributeCompletenessEnum : attribute_completeness
        click AttributeCompletenessEnum href "../AttributeCompletenessEnum/"



      DonationItem : category

      DonationItem : created_at

      DonationItem : donation_source





        DonationItem --> "0..1" DonationSource : donation_source
        click DonationSource href "../DonationSource/"



      DonationItem : id

      DonationItem : lifecycle_state





        DonationItem --> "1" ItemLifecycleStateEnum : lifecycle_state
        click ItemLifecycleStateEnum href "../ItemLifecycleStateEnum/"



      DonationItem : sorting_notes

      DonationItem : source_collection





        DonationItem --> "0..1" DonationCollection : source_collection
        click DonationCollection href "../DonationCollection/"



      DonationItem : storage_unit





        DonationItem --> "0..1" StorageLocation : storage_unit
        click StorageLocation href "../StorageLocation/"



      DonationItem : updated_at

      DonationItem : usage





        DonationItem --> "1" ItemUsageEnum : usage
        click ItemUsageEnum href "../ItemUsageEnum/"



Inheritance

Class Properties

Property Value
Class URI schema:Product

Slots

Name Cardinality and Range Description Inheritance
id 1
Uriorcurie
A unique identifier for the entity direct
usage 1
ItemUsageEnum
Provenance condition — was the item ever used before donation? Orthogonal to ... direct
category 1
String
Type-defining slot on DonationItem direct
lifecycle_state 1
ItemLifecycleStateEnum
Current lifecycle state of the entity direct
attribute_completeness 0..1
AttributeCompletenessEnum
Data quality tier set by the fragment engine on sorting completion direct
source_collection 0..1
DonationCollection
FK — the DonationCollection (arrival type) this item was registered from direct
donation_source 0..1
DonationSource
Reference to the DonationSource — privacy boundary between item records and d... direct
storage_unit 0..1
StorageLocation
FK — set when lifecycle_state transitions to stored direct
sorting_notes 0..1
String
Free-text notes recorded by the sorter during sorting direct
created_at 1
Datetime
Timestamp when the entity was created direct
updated_at 1
Datetime
Timestamp when the entity record was last modified direct

See Also

Identifier and Mapping Information

Annotations

property value
completeness_minimal category, usage
completeness_standard category, usage, sorting_notes
completeness_detailed category, usage, source_collection, donation_source, sorting_notes
label_en Donation Item
label_de Spendenartikel

Schema Source

  • from schema: https://inkind-at.github.io/inkind-knowledge-repo

Mappings

Mapping Type Mapped Value
self schema:Product
native inkind_knowledge_repo:DonationItem

LinkML Source

Direct

name: DonationItem
annotations:
  completeness_minimal:
    tag: completeness_minimal
    value: category, usage
  completeness_standard:
    tag: completeness_standard
    value: category, usage, sorting_notes
  completeness_detailed:
    tag: completeness_detailed
    value: category, usage, source_collection, donation_source, sorting_notes
  label_en:
    tag: label_en
    value: Donation Item
  label_de:
    tag: label_de
    value: Spendenartikel
description: 'Abstract base for all donation items. Never instantiated directly.

  The category slot carries designates_type: true  its value (the class URI of the
  concrete subclass) selects which subclass schema applies. This is the LinkML mechanism
  for a discriminated union: category IS the type, not an attribute of the item. Grounded
  in schema:Product.

  attribute_completeness is set by the fragment engine when the sorting episode completes.
  It records data quality  NOT whether the episode was complete (lifecycle_state
  = sorted records that). See AttributeCompletenessEnum in core.yaml for the full
  rationale.

  The lifecycle state machine is documented in ItemLifecycleStateEnum in core.yaml.
  Transitions are enforced by Django model clean(). The sorting_in_progress state
  prevents concurrent editing of the same item by two sorters simultaneously.'
from_schema: https://inkind-at.github.io/inkind-knowledge-repo
see_also:
- schema:Product
abstract: true
slots:
- id
- usage
- category
- lifecycle_state
- attribute_completeness
- source_collection
- donation_source
- storage_unit
- sorting_notes
- created_at
- updated_at
slot_usage:
  category:
    name: category
    notes:
    - Due to a limitation in LinkML, the designates_type annotation was removed because
      the range is an Enum and not a string.
    designates_type: true
    range: string
    required: true
  lifecycle_state:
    name: lifecycle_state
    range: ItemLifecycleStateEnum
    required: true
  usage:
    name: usage
    range: ItemUsageEnum
    required: true
  attribute_completeness:
    name: attribute_completeness
    range: AttributeCompletenessEnum
    required: false
  source_collection:
    name: source_collection
    range: DonationCollection
    required: false
  donation_source:
    name: donation_source
    range: DonationSource
    required: false
  storage_unit:
    name: storage_unit
    range: StorageLocation
    required: false
class_uri: schema:Product

Induced

name: DonationItem
annotations:
  completeness_minimal:
    tag: completeness_minimal
    value: category, usage
  completeness_standard:
    tag: completeness_standard
    value: category, usage, sorting_notes
  completeness_detailed:
    tag: completeness_detailed
    value: category, usage, source_collection, donation_source, sorting_notes
  label_en:
    tag: label_en
    value: Donation Item
  label_de:
    tag: label_de
    value: Spendenartikel
description: 'Abstract base for all donation items. Never instantiated directly.

  The category slot carries designates_type: true  its value (the class URI of the
  concrete subclass) selects which subclass schema applies. This is the LinkML mechanism
  for a discriminated union: category IS the type, not an attribute of the item. Grounded
  in schema:Product.

  attribute_completeness is set by the fragment engine when the sorting episode completes.
  It records data quality  NOT whether the episode was complete (lifecycle_state
  = sorted records that). See AttributeCompletenessEnum in core.yaml for the full
  rationale.

  The lifecycle state machine is documented in ItemLifecycleStateEnum in core.yaml.
  Transitions are enforced by Django model clean(). The sorting_in_progress state
  prevents concurrent editing of the same item by two sorters simultaneously.'
from_schema: https://inkind-at.github.io/inkind-knowledge-repo
see_also:
- schema:Product
abstract: true
slot_usage:
  category:
    name: category
    notes:
    - Due to a limitation in LinkML, the designates_type annotation was removed because
      the range is an Enum and not a string.
    designates_type: true
    range: string
    required: true
  lifecycle_state:
    name: lifecycle_state
    range: ItemLifecycleStateEnum
    required: true
  usage:
    name: usage
    range: ItemUsageEnum
    required: true
  attribute_completeness:
    name: attribute_completeness
    range: AttributeCompletenessEnum
    required: false
  source_collection:
    name: source_collection
    range: DonationCollection
    required: false
  donation_source:
    name: donation_source
    range: DonationSource
    required: false
  storage_unit:
    name: storage_unit
    range: StorageLocation
    required: false
attributes:
  id:
    name: id
    description: A unique identifier for the entity.
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    slot_uri: schema:identifier
    identifier: true
    alias: id
    owner: DonationItem
    domain_of:
    - NamedThing
    - SocialOrganisation
    - Actor
    - StorageLocation
    - DonationSource
    - DonationCollection
    - DonationItem
    - DemandSignal
    - Campaign
    - ProvenanceRecord
    range: uriorcurie
    required: true
  usage:
    name: usage
    annotations:
      label_en:
        tag: label_en
        value: Provenance
      label_de:
        tag: label_de
        value: Provenance
    description: Provenance condition — was the item ever used before donation? Orthogonal
      to condition_grade and assessment_result. Maps to schema:NewCondition / schema:UsedCondition.
      usage = new does NOT imply no defects — manufacturing defects are possible and
      assessment must always be performed regardless of usage.
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    see_also:
    - schema:OfferItemCondition
    - schema:NewCondition
    - schema:UsedCondition
    rank: 1000
    slot_uri: schema:itemCondition
    alias: usage
    owner: DonationItem
    domain_of:
    - DonationItem
    range: ItemUsageEnum
    required: true
  category:
    name: category
    annotations:
      label_en:
        tag: label_en
        value: Item Type
      label_de:
        tag: label_de
        value: Artikeltyp
    description: Type-defining slot on DonationItem. Value is the class URI of the
      concrete subclass (e.g. inkind_knowledge_repo:ClothingItem). linkml-validate,
      gen-json-schema, and gen-pydantic all use this slot to dispatch to the correct
      subclass schema and valid slot set. For other entities (DemandSignal, StorageLocation)
      the range is overridden via slot_usage to CategoryEnum.
    notes:
    - Due to a limitation in LinkML, the designates_type annotation was removed because
      the range is an Enum and not a string.
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    slot_uri: schema:additionalType
    designates_type: true
    alias: category
    owner: DonationItem
    domain_of:
    - DonationItem
    - DemandSignal
    range: string
    required: true
  lifecycle_state:
    name: lifecycle_state
    description: Current lifecycle state of the entity. Concrete enum range applied
      via slot_usage. Transitions enforced by Django model clean().
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    alias: lifecycle_state
    owner: DonationItem
    domain_of:
    - DonationSource
    - DonationCollection
    - DonationItem
    - DemandSignal
    - Campaign
    range: ItemLifecycleStateEnum
    required: true
  attribute_completeness:
    name: attribute_completeness
    description: 'Data quality tier set by the fragment engine on sorting completion.
      Not derived from field presence. Not a lifecycle gate. Used by the match engine
      to filter candidates by data quality tier. See AttributeCompletenessEnum for
      the relationship to lifecycle_state. Set by: fragment_engine. Read by: match_engine.'
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    alias: attribute_completeness
    owner: DonationItem
    domain_of:
    - DonationItem
    range: AttributeCompletenessEnum
    required: false
  source_collection:
    name: source_collection
    description: FK — the DonationCollection (arrival type) this item was registered
      from. Null for items not arriving as part of a collection.
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    alias: source_collection
    owner: DonationItem
    domain_of:
    - DonationItem
    range: DonationCollection
    required: false
  donation_source:
    name: donation_source
    description: Reference to the DonationSource — privacy boundary between item records
      and donor identity. Concrete range applied via slot_usage.
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    slot_uri: inkind_knowledge_repo:donation_source
    alias: donation_source
    owner: DonationItem
    domain_of:
    - DonationCollection
    - DonationItem
    range: DonationSource
    required: false
  storage_unit:
    name: storage_unit
    description: FK — set when lifecycle_state transitions to stored. Null until the
      item reaches stored state.
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    alias: storage_unit
    owner: DonationItem
    domain_of:
    - DonationItem
    range: StorageLocation
    required: false
  sorting_notes:
    name: sorting_notes
    annotations:
      label_en:
        tag: label_en
        value: Notes
      label_de:
        tag: label_de
        value: Notizen
    description: Free-text notes recorded by the sorter during sorting. Required by
      UC warn rules to capture explicit sorter confirmation (e.g. incomplete pair,
      body-contact item, inconclusive assessment).
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    alias: sorting_notes
    owner: DonationItem
    domain_of:
    - DonationItem
    range: string
  created_at:
    name: created_at
    description: Timestamp when the entity was created.
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    alias: created_at
    owner: DonationItem
    domain_of:
    - DonationSource
    - DonationCollection
    - DonationItem
    range: datetime
    required: true
  updated_at:
    name: updated_at
    description: Timestamp when the entity record was last modified.
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    alias: updated_at
    owner: DonationItem
    domain_of:
    - DonationItem
    range: datetime
    required: true
class_uri: schema:Product