glam/schemas/20251121/linkml/modules/classes/DetectedEntity.yaml
kempersc 74ca873585
All checks were successful
Deploy Frontend / build-and-deploy (push) Successful in 3m58s
fix: update generated timestamp in manifest.json
2026-01-13 21:54:50 +01:00

213 lines
7.2 KiB
YAML

# DetectedEntity - Base class for detected items in automated analysis
#
# Following the Type/Types naming convention (Rule 0b):
# - DetectedEntity: Base class for things detected by automated analysis
# - Used with has_or_had_detected slot for linking detection results
#
# Generation date: 2026-01-13
# Rule compliance: 0b (Type/Types naming), 38 (slot centralization), 39 (RiC-O naming)
id: https://nde.nl/ontology/hc/class/DetectedEntity
name: DetectedEntity
title: Detected Entity Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
prov: http://www.w3.org/ns/prov#
schema: http://schema.org/
crm: http://www.cidoc-crm.org/cidoc-crm/
skos: http://www.w3.org/2004/02/skos/core#
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
- ../slots/has_or_had_type
- ../slots/confidence_score
- ../slots/start_time
- ../slots/end_time
- ../slots/bounding_box
classes:
DetectedEntity:
class_uri: prov:Entity
description: |
Base class for entities detected through automated analysis processes.
**DEFINITION**:
DetectedEntity represents items identified by automated analysis pipelines
(computer vision, NLP, audio analysis, etc.). Each detected entity captures:
- What was detected (via has_or_had_type → specific Type class)
- Detection confidence (probability score)
- Temporal/spatial location (timestamps, bounding boxes)
**CRITICAL: DETECTION vs TYPE**
| Aspect | DetectedEntity (This Class) | *Type Classes (Categories) |
|--------|----------------------------|---------------------------|
| **Nature** | Detection result | Classification |
| **Examples** | "Transition at 00:03:15" | FADE_IN, CUT, DISSOLVE |
| **Properties** | Confidence, timestamps | Semantic metadata |
| **Cardinality** | Many instances per video | ~20-30 types |
**USE CASE - Video Annotation**:
```
VideoAnnotation
└── has_or_had_detected → DetectedEntity[]
├── has_or_had_type → TransitionType (FADE_IN, CUT, etc.)
├── confidence_score → 0.95
├── start_time → "00:03:15"
└── end_time → "00:03:17"
```
**USE CASE - Text Detection**:
```
VideoAnnotation
└── has_or_had_detected → DetectedEntity[]
├── has_or_had_type → TextType (TITLE, CAPTION, etc.)
├── confidence_score → 0.87
├── bounding_box → [x1, y1, x2, y2]
└── has_or_had_label → "Museum Tour"
```
**ONTOLOGY ALIGNMENT**:
- **PROV-O Entity**: Detected entities are generated by activities
- **W3C Web Annotation**: Compatible with annotation body/target patterns
- **CIDOC-CRM E73_Information_Object**: Information derived from sources
**RELATIONSHIP TO SLOTS**:
- `has_or_had_detected`: Links from VideoAnnotation → DetectedEntity[]
- `has_or_had_type`: Links DetectedEntity → TransitionType, TextType, etc.
- Uses shared slots for identifier, label, confidence
abstract: false
exact_mappings:
- prov:Entity
close_mappings:
- crm:E73_Information_Object
- schema:DataDownload
related_mappings:
- schema:Thing
- crm:E21_Person # For person detection
slots:
- has_or_had_identifier
- has_or_had_label
- has_or_had_type
- confidence_score
- start_time
- end_time
- bounding_box
slot_usage:
has_or_had_identifier:
range: string
required: false
description: "Unique identifier for this detection instance"
examples:
- value: "detection-001"
- value: "transition-fade-00:03:15"
has_or_had_type:
range: string
required: true
description: |
Type of detected entity. Specialize range in subclasses or
slot_usage to reference specific Type classes (TransitionType, TextType, etc.)
examples:
- value: "TransitionType:FADE_IN"
- value: "TextType:TITLE"
has_or_had_label:
range: string
required: false
description: "Human-readable label for the detected entity (e.g., detected text content)"
examples:
- value: "Museum Tour"
- value: "Opening Credits"
confidence_score:
range: float
required: false
minimum_value: 0.0
maximum_value: 1.0
description: "Detection confidence score (0.0 to 1.0)"
examples:
- value: 0.95
description: "High confidence detection"
- value: 0.62
description: "Moderate confidence, may need review"
start_time:
range: string
required: false
description: "Start timestamp for temporal detections (ISO 8601 or HH:MM:SS format)"
examples:
- value: "00:03:15"
- value: "PT3M15S"
end_time:
range: string
required: false
description: "End timestamp for temporal detections"
examples:
- value: "00:03:17"
bounding_box:
range: float
multivalued: true
required: false
description: "Spatial location as [x1, y1, x2, y2] coordinates"
examples:
- value: [100.0, 50.0, 400.0, 150.0]
description: "Bounding box for detected text region"
annotations:
specificity_score: "0.65"
specificity_rationale: "Fairly specific - detection entities are domain-relevant for media analysis."
template_specificity: '{"collection_discovery": 0.30, "digital_platform": 0.80, "general_heritage": 0.50}'
replaces_pattern: |
Replaces inline transition_types_detected and text_types_detected slots
with structured DetectedEntity → has_or_had_type → Type pattern.
comments:
- "Base class for automated detection results"
- "Use has_or_had_type to link to specific Type classes (TransitionType, TextType)"
- "Captures detection metadata: confidence, timestamps, bounding boxes"
- "Generated by detection activities (prov:wasGeneratedBy pattern)"
- "Rule 39 compliant: uses has_or_had_* slot naming"
see_also:
- https://www.w3.org/TR/prov-o/#Entity
- https://www.w3.org/TR/annotation-model/
- http://www.cidoc-crm.org/cidoc-crm/E73_Information_Object
examples:
- value:
has_or_had_identifier: "transition-001"
has_or_had_type: "TransitionType:FADE_IN"
confidence_score: 0.95
start_time: "00:03:15"
end_time: "00:03:17"
description: "Video transition detection (fade in)"
- value:
has_or_had_identifier: "text-001"
has_or_had_type: "TextType:TITLE"
has_or_had_label: "Museum Tour Guide"
confidence_score: 0.87
bounding_box: [100.0, 50.0, 400.0, 150.0]
description: "On-screen text detection"