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
- DonationItem
- ClothingItem [ ClothingCategory]
- AccessoriesItem [ AccessoriesCategory]
- FootwearItem [ FootwearCategory]
- FurnitureItem [ FurnitureCategory]
- BeddingTextilesItem [ BeddingTextilesCategory]
- HouseholdItem [ HouseholdCategory]
- ElectronicsItem [ ElectronicsCategory]
- ToysItem [ ToysCategory]
- SportsItem [ SportsCategory]
- BooksItem [ BooksCategory]
- StationeryItem [ StationeryCategory]
- PersonalCareItem [ PersonalCareCategory]
- MobilityAidsItem [ MobilityAidsCategory]
- BabyInfantItem [ BabyInfantCategory]
- FoodItem [ FoodCategory]
- OtherItem
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