# 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 # MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + GenerationEvent + ConfidenceScore - ../slots/is_or_was_generated_by - ./GenerationEvent - ./ConfidenceScore - ../slots/start_time - ../slots/end_time - ../slots/has_or_had_geographic_extent # was: bounding_box - migrated per Rule 53/56 (2026-01-17) 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 ├── has_or_had_geographic_extent → [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 # MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by - is_or_was_generated_by - start_time - end_time - has_or_had_geographic_extent # was: bounding_box - migrated per Rule 53/56 (2026-01-17) 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" is_or_was_generated_by: range: GenerationEvent required: false inlined: true description: >- Generation event containing confidence score for entity detection. MIGRATED 2026-01-19: Replaces confidence_score slot with structured pattern. examples: - value: has_or_had_score: has_or_had_score: 0.95 has_or_had_method: "computer_vision" description: "High confidence detection" - value: has_or_had_score: has_or_had_score: 0.62 has_or_had_method: "ocr_extraction" 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" has_or_had_geographic_extent: # was: bounding_box - migrated per Rule 53/56 (2026-01-17) range: float multivalued: true required: false description: "Spatial location as [x1, y1, x2, y2] pixel coordinates for image detection" 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." has_or_had_score: # was: template_specificity - migrated per Rule 53 (2026-01-17) # NOTE: slot_usage may need manual review for range/description updates '{"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 (via is_or_was_generated_by), timestamps, bounding boxes" - "Generated by detection activities (prov:wasGeneratedBy pattern)" - "Rule 39 compliant: uses has_or_had_* slot naming" - "MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + ConfidenceScore" 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" is_or_was_generated_by: has_or_had_score: has_or_had_score: 0.95 has_or_had_method: "video_analysis" 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" is_or_was_generated_by: has_or_had_score: has_or_had_score: 0.87 has_or_had_method: "ocr_extraction" has_or_had_geographic_extent: [100.0, 50.0, 400.0, 150.0] # was: bounding_box description: "On-screen text detection"