# Project Plan Documentation Schema # Semantic representation of project plans for ontology development work # # This schema models project plans following PROV-O, FOAF, and W3C ORG patterns # with bilingual support (Dutch/English) for NDE heritage domain. # # Created: November 2025 # Purpose: Document the Heritage Custodian Ontology (Bronhouder Ontologie) project id: https://nde.nl/ontology/doc/project-plan name: project_plan_schema title: Project Plan Documentation Schema version: "0.1.0" description: >- LinkML schema for representing ontology development project plans. Supports bilingual labels (nl/en) and aligns with PROV-O for provenance, FOAF for agents, and W3C ORG for organizational context. prefixes: linkml: https://w3id.org/linkml/ doc: https://nde.nl/ontology/doc/ prov: http://www.w3.org/ns/prov# foaf: http://xmlns.com/foaf/0.1/ org: http://www.w3.org/ns/org# schema: http://schema.org/ dcterms: http://purl.org/dc/terms/ skos: http://www.w3.org/2004/02/skos/core# time: http://www.w3.org/2006/time# tooi: https://identifier.overheid.nl/tooi/def/ont/ rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# default_prefix: doc default_range: string imports: - linkml:types # ============================================================================= # ENUMERATIONS # ============================================================================= enums: WorkPackageStatusEnum: description: Status of a work package in the project lifecycle permissible_values: PLANNED: description: Work package is planned but not yet started meaning: prov:Plan IN_PROGRESS: description: Work package is currently being executed COMPLETED: description: Work package has been finished ON_HOLD: description: Work package is temporarily suspended CANCELLED: description: Work package has been cancelled DeliverableTypeEnum: description: Types of project deliverables permissible_values: ONTOLOGY: description: Ontology specification or extension SCHEMA: description: Data schema (LinkML, JSON Schema, SHACL, etc.) MAPPING: description: Mapping between vocabularies or datasets DOCUMENTATION: description: Technical or user documentation TEMPLATE: description: Reusable template (JSON-LD, validation rules, etc.) DATASET: description: Transformed or enriched dataset VALIDATION: description: Validation rules or quality checks PROFILE: description: Application profile for a standard OntologyAlignmentTypeEnum: description: Types of ontology alignment relationships permissible_values: EXTENSION: description: Extends or profiles the target ontology meaning: skos:broadMatch MAPPING: description: Maps concepts to target ontology meaning: skos:exactMatch INTEGRATION: description: Integrates with target ontology vocabulary meaning: skos:relatedMatch REFERENCE: description: References target ontology for consistency meaning: skos:closeMatch ScopeTypeEnum: description: Whether an item is in scope or out of scope permissible_values: IN_SCOPE: description: Included in current project scope OUT_OF_SCOPE: description: Explicitly excluded from current project scope FUTURE_SCOPE: description: Planned for future work beyond current project # ============================================================================= # TYPES # ============================================================================= types: Duration: typeof: integer description: Duration in hours uri: time:hours WeekNumber: typeof: integer description: ISO week number (1-53) minimum_value: 1 maximum_value: 53 # ============================================================================= # CLASSES # ============================================================================= classes: # --------------------------------------------------------------------------- # Project Plan (Root Container) # --------------------------------------------------------------------------- ProjectPlan: tree_root: true class_uri: prov:Plan description: >- A comprehensive project plan describing an ontology development effort. **PROV-O Alignment**: - prov:Plan - "A plan is an entity that represents a set of actions or steps intended by one or more agents to achieve some goals." - The ProjectPlan is a prov:Plan that guides the prov:Activity instances (WorkPackages) that execute it. **Bilingual Support**: All labels and descriptions support both Dutch (@nl) and English (@en) language tags to serve NDE's international collaboration goals. exact_mappings: - prov:Plan - schema:Project - foaf:Project close_mappings: - org:OrganizationalCollaboration slots: - plan_id - plan_title - plan_title_en - plan_description - plan_description_en - assignment - assignment_en - focus_points - focus_points_en - work_packages - out_of_scope_items - timeline - total_hours - commissioning_organization - executing_agent - created_date - modified_date slot_usage: plan_id: identifier: true required: true plan_title: required: true work_packages: required: true inlined_as_list: true # --------------------------------------------------------------------------- # Work Package (Activity) # --------------------------------------------------------------------------- WorkPackage: class_uri: prov:Activity description: >- A discrete unit of work within a project plan with defined objectives, deliverables, and time allocation. **PROV-O Alignment**: - prov:Activity - "An activity is something that occurs over a period of time and acts upon or with entities; it may include consuming, processing, transforming, modifying, relocating, using, or generating entities." - Each WorkPackage is a prov:Activity that: - prov:wasInfluencedBy the ProjectPlan (guided by plan) - prov:generated Deliverable entities (produces outputs) **TOOI Alignment**: For Dutch government context, work packages can align with tooi:Werkzaamheid (activity) patterns. exact_mappings: - prov:Activity - schema:Action close_mappings: - tooi:Werkzaamheid slots: - wp_id - wp_number - wp_title - wp_title_en - wp_objective - wp_objective_en - deliverables - allocated_hours - status - ontology_alignments slot_usage: wp_id: identifier: true required: true wp_number: required: true wp_title: required: true allocated_hours: required: true deliverables: inlined_as_list: true ontology_alignments: inlined_as_list: true # --------------------------------------------------------------------------- # Deliverable (Entity) # --------------------------------------------------------------------------- Deliverable: class_uri: prov:Entity description: >- A tangible output produced by a work package. **PROV-O Alignment**: - prov:Entity - "An entity is a physical, digital, conceptual, or other kind of thing with some fixed aspects." - Each Deliverable is prov:wasGeneratedBy a WorkPackage (prov:Activity) - Deliverables may prov:wasDerivedFrom other entities (source ontologies) exact_mappings: - prov:Entity - schema:CreativeWork slots: - deliverable_id - deliverable_title - deliverable_title_en - deliverable_description - deliverable_description_en - deliverable_type - target_ontology - related_standards slot_usage: deliverable_id: identifier: true required: true deliverable_title: required: true deliverable_type: required: true target_ontology: multivalued: true inlined_as_list: true related_standards: multivalued: true inlined_as_list: true # --------------------------------------------------------------------------- # Ontology Alignment # --------------------------------------------------------------------------- OntologyAlignment: class_uri: skos:mappingRelation description: >- Documents how the project aligns with or extends an existing ontology. **SKOS Alignment**: Uses SKOS mapping relations (exactMatch, closeMatch, broadMatch, relatedMatch) to document semantic relationships between project outputs and base ontologies. exact_mappings: - skos:mappingRelation slots: - alignment_id - target_ontology_name - target_ontology_uri - alignment_type - alignment_description - alignment_description_en slot_usage: alignment_id: identifier: true required: true target_ontology_name: required: true alignment_type: required: true # --------------------------------------------------------------------------- # Out of Scope Item # --------------------------------------------------------------------------- OutOfScopeItem: class_uri: schema:Thing description: >- An item explicitly marked as outside the current project scope. Documents what is NOT included to clarify boundaries and manage expectations. slots: - item_id - item_title - item_title_en - item_description - item_description_en - scope_type - rationale - rationale_en slot_usage: item_id: identifier: true required: true item_title: required: true scope_type: required: true # --------------------------------------------------------------------------- # Project Timeline # --------------------------------------------------------------------------- ProjectTimeline: class_uri: time:TemporalEntity description: >- Temporal boundaries for the project execution. **OWL-Time Alignment**: Uses OWL-Time vocabulary for temporal description. exact_mappings: - time:TemporalEntity - time:ProperInterval slots: - start_week - end_week - start_year - end_year - duration_weeks slot_usage: start_week: required: true end_week: required: true start_year: required: true # --------------------------------------------------------------------------- # Agent (Organization or Person) # --------------------------------------------------------------------------- Agent: class_uri: prov:Agent description: >- An agent (person or organization) involved in the project. **PROV-O Alignment**: - prov:Agent - "An agent is something that bears some form of responsibility for an activity taking place." exact_mappings: - prov:Agent - foaf:Agent close_mappings: - org:Organization - foaf:Person - foaf:Organization slots: - agent_id - agent_name - agent_name_en - agent_type - agent_url - agent_identifiers slot_usage: agent_id: identifier: true required: true agent_name: required: true agent_identifiers: multivalued: true inlined_as_list: true # ============================================================================= # SLOTS # ============================================================================= slots: # --------------------------------------------------------------------------- # ProjectPlan slots # --------------------------------------------------------------------------- plan_id: slot_uri: dcterms:identifier range: uriorcurie description: Unique identifier for this project plan plan_title: slot_uri: dcterms:title range: string description: Title of the project plan (Dutch) annotations: language: nl plan_title_en: slot_uri: dcterms:title range: string description: Title of the project plan (English) annotations: language: en plan_description: slot_uri: dcterms:description range: string description: Detailed description of the project plan (Dutch) annotations: language: nl plan_description_en: slot_uri: dcterms:description range: string description: Detailed description of the project plan (English) annotations: language: en assignment: slot_uri: dcterms:abstract range: string description: The assignment/commission for the project (Dutch - OPDRACHT) annotations: language: nl assignment_en: slot_uri: dcterms:abstract range: string description: The assignment/commission for the project (English) annotations: language: en focus_points: slot_uri: skos:note range: string description: Key focus points and considerations (Dutch - AANDACHTSPUNT) annotations: language: nl focus_points_en: slot_uri: skos:note range: string description: Key focus points and considerations (English) annotations: language: en work_packages: slot_uri: prov:hadPlan range: WorkPackage multivalued: true inlined: true inlined_as_list: true description: Work packages that constitute this project plan out_of_scope_items: slot_uri: schema:hasPart range: OutOfScopeItem multivalued: true inlined: true inlined_as_list: true description: Items explicitly marked as out of scope timeline: slot_uri: dcterms:temporal range: ProjectTimeline inlined: true description: Project timeline with start/end dates total_hours: slot_uri: time:hours range: Duration description: Total allocated hours for the project commissioning_organization: slot_uri: prov:wasAttributedTo range: Agent inlined: true description: Organization that commissioned the project executing_agent: slot_uri: prov:wasAssociatedWith range: Agent inlined: true description: Agent (person or organization) executing the project created_date: slot_uri: dcterms:created range: date description: Date the project plan was created modified_date: slot_uri: dcterms:modified range: date description: Date the project plan was last modified # --------------------------------------------------------------------------- # WorkPackage slots # --------------------------------------------------------------------------- wp_id: slot_uri: dcterms:identifier range: uriorcurie description: Unique identifier for this work package wp_number: slot_uri: schema:position range: integer description: Sequential number of the work package (1, 2, 3...) wp_title: slot_uri: dcterms:title range: string description: Title of the work package (Dutch) annotations: language: nl wp_title_en: slot_uri: dcterms:title range: string description: Title of the work package (English) annotations: language: en wp_objective: slot_uri: dcterms:abstract range: string description: Objective of the work package (Dutch - Doelstelling) annotations: language: nl wp_objective_en: slot_uri: dcterms:abstract range: string description: Objective of the work package (English) annotations: language: en deliverables: slot_uri: prov:generated range: Deliverable multivalued: true inlined: true inlined_as_list: true description: Deliverables produced by this work package allocated_hours: slot_uri: time:hours range: Duration description: Hours allocated to this work package status: slot_uri: schema:eventStatus range: WorkPackageStatusEnum description: Current status of the work package ontology_alignments: slot_uri: skos:relatedMatch range: OntologyAlignment multivalued: true inlined: true inlined_as_list: true description: Ontology alignments relevant to this work package # --------------------------------------------------------------------------- # Deliverable slots # --------------------------------------------------------------------------- deliverable_id: slot_uri: dcterms:identifier range: uriorcurie description: Unique identifier for this deliverable deliverable_title: slot_uri: dcterms:title range: string description: Title of the deliverable (Dutch) annotations: language: nl deliverable_title_en: slot_uri: dcterms:title range: string description: Title of the deliverable (English) annotations: language: en deliverable_description: slot_uri: dcterms:description range: string description: Description of the deliverable (Dutch) annotations: language: nl deliverable_description_en: slot_uri: dcterms:description range: string description: Description of the deliverable (English) annotations: language: en deliverable_type: slot_uri: dcterms:type range: DeliverableTypeEnum description: Type of deliverable target_ontology: slot_uri: skos:relatedMatch range: string multivalued: true description: Target ontologies this deliverable relates to related_standards: slot_uri: dcterms:conformsTo range: string multivalued: true description: Standards this deliverable conforms to or relates to # --------------------------------------------------------------------------- # OntologyAlignment slots # --------------------------------------------------------------------------- alignment_id: slot_uri: dcterms:identifier range: uriorcurie description: Unique identifier for this alignment target_ontology_name: slot_uri: skos:prefLabel range: string description: Name of the target ontology target_ontology_uri: slot_uri: dcterms:source range: uri description: URI of the target ontology alignment_type: slot_uri: skos:mappingRelation range: OntologyAlignmentTypeEnum description: Type of alignment relationship alignment_description: slot_uri: dcterms:description range: string description: Description of the alignment (Dutch) annotations: language: nl alignment_description_en: slot_uri: dcterms:description range: string description: Description of the alignment (English) annotations: language: en # --------------------------------------------------------------------------- # OutOfScopeItem slots # --------------------------------------------------------------------------- item_id: slot_uri: dcterms:identifier range: uriorcurie description: Unique identifier for this out-of-scope item item_title: slot_uri: dcterms:title range: string description: Title of the out-of-scope item (Dutch) annotations: language: nl item_title_en: slot_uri: dcterms:title range: string description: Title of the out-of-scope item (English) annotations: language: en item_description: slot_uri: dcterms:description range: string description: Description of the out-of-scope item (Dutch) annotations: language: nl item_description_en: slot_uri: dcterms:description range: string description: Description of the out-of-scope item (English) annotations: language: en scope_type: slot_uri: schema:category range: ScopeTypeEnum description: Whether item is out of scope or future scope rationale: slot_uri: skos:note range: string description: Rationale for exclusion (Dutch) annotations: language: nl rationale_en: slot_uri: skos:note range: string description: Rationale for exclusion (English) annotations: language: en # --------------------------------------------------------------------------- # ProjectTimeline slots # --------------------------------------------------------------------------- start_week: slot_uri: time:week range: WeekNumber description: Starting week number (ISO week) end_week: slot_uri: time:week range: WeekNumber description: Ending week number (ISO week) start_year: slot_uri: time:year range: integer description: Starting year end_year: slot_uri: time:year range: integer description: Ending year duration_weeks: slot_uri: time:weeks range: integer description: Duration in weeks # --------------------------------------------------------------------------- # Agent slots # --------------------------------------------------------------------------- agent_id: slot_uri: dcterms:identifier range: uriorcurie description: Unique identifier for this agent agent_name: slot_uri: foaf:name range: string description: Name of the agent (Dutch) annotations: language: nl agent_name_en: slot_uri: foaf:name range: string description: Name of the agent (English) annotations: language: en agent_type: slot_uri: rdf:type range: string description: Type of agent (Person, Organization, etc.) agent_url: slot_uri: foaf:homepage range: uri description: Homepage URL of the agent agent_identifiers: slot_uri: dcterms:identifier range: string multivalued: true description: External identifiers (Wikidata, ISNI, etc.)