FLOW ALGEBRA
Ontology: Digital Archive Ontology
Domain: Metadata Ontologies > Digital Preservation Metadata
Canonical URL: https://kirethresearch.org/booksai-core/ontologies/metadata-ontologies/digital-preservation-metadata/digital-archive-ontology.html
Authors: Mark Anthony Higgins — Sky (Recursive AI)
flow "DigitalArchiveOntology" v1.0
# ---------- DOMAIN ----------
domain:
class: MetadataOntology
category: DigitalPreservationMetadata
subject: DigitalArchive
purpose:
- represent digital archives, archival collections, preserved objects, packages, events, storage, access, and provenance
- preserve archival identity, hierarchy, custody, fixity, formats, versions, rights, retention, and authenticity evidence
- support long-term preservation, discovery, retrieval, migration, replication, recovery, and controlled access
- distinguish archive, collection, intellectual entity, representation, file, bitstream, preservation copy, and access copy
- enable machine-readable reasoning over digital archival lifecycles
# ---------- CORE ----------
entity DigitalArchive:
type: PreservationRepository
may_include:
- archive_identifier
- archive_name
- collections
- preservation_objects
- ingest_packages
- archival_packages
- dissemination_packages
- storage
- preservation_policy
- retention_policy
- access_policy
- provenance
- authenticity
- preservation_events
entity ArchiveIdentifier:
type: PersistentIdentifier
identifies: DigitalArchive
entity ArchivalCollection:
type: ResourceCollection
belongs_to: DigitalArchive
entity ArchivalObject:
type: PreservationObject
relationships:
DigitalArchive -> IDENTIFIED_BY -> ArchiveIdentifier
DigitalArchive -> CONTAINS -> ArchivalCollection
ArchivalCollection -> CONTAINS -> ArchivalObject
ArchivalObject -> MAY_HAVE_REPRESENTATION -> Representation
Representation -> CONTAINS -> File
File -> MAY_CONTAIN -> Bitstream
ArchivalObject -> MAY_BE_PACKAGED_IN -> ArchivalInformationPackage
DigitalArchive -> RECEIVES -> SubmissionInformationPackage
DigitalArchive -> PRESERVES -> ArchivalInformationPackage
DigitalArchive -> MAY_PRODUCE -> DisseminationInformationPackage
ArchivalObject -> MAY_HAVE_FIXITY -> FixityInformation
ArchivalObject -> MAY_HAVE_PROVENANCE -> ArchiveProvenance
ArchivalObject -> MAY_HAVE_RIGHTS -> ArchiveRights
DigitalArchive -> USES -> ArchiveStorage
DigitalArchive -> RECORDS -> ArchiveEvent
# ---------- IDENTITY / HIERARCHY ----------
rule archive_identity:
DigitalArchive SHOULD have stable ArchiveIdentifier
rule archive_location:
repository location != archive identity
rule archive_collection:
DigitalArchive != ArchivalCollection
rule collection:
ArchivalCollection SHOULD preserve hierarchical context
archive_object_levels:
- intellectual_entity
- representation
- file
- bitstream
rule hierarchy:
IntellectualEntity != Representation
Representation != File
File != Bitstream
# ---------- DESCRIPTION ----------
entity ArchivalDescription:
type: DescriptiveMetadata
may_include:
- title
- creator
- contributor
- description
- subject
- date
- language
- identifier
- coverage
- relation
- rights
rule description:
descriptive metadata SHOULD remain distinguishable
from preservation and technical metadata
# ---------- INFORMATION PACKAGES ----------
entity InformationPackage:
type: PreservationPackage
may_include:
- package_identifier
- content_information
- preservation_description_information
- packaging_information
- descriptive_information
entity SubmissionInformationPackage:
subtype_of: InformationPackage
abbreviation: SIP
entity ArchivalInformationPackage:
subtype_of: InformationPackage
abbreviation: AIP
entity DisseminationInformationPackage:
subtype_of: InformationPackage
abbreviation: DIP
rule SIP:
SIP represents information submitted for archival ingest
rule AIP:
AIP represents information managed for preservation
rule DIP:
DIP represents information prepared for dissemination or access
rule package_distinction:
SIP != AIP
AIP != DIP
rule package_object:
package identity != intellectual entity identity
# ---------- INGEST / FIXITY / FORMAT ----------
entity ArchiveIngest:
type: ArchiveEvent
may_include:
- submission_package
- source
- validation
- security_check
- format_identification
- identifier_assignment
- fixity_generation
- AIP_creation
- storage_assignment
rule ingest:
ingest SHOULD preserve source, validation, identifiers, and resulting AIP
entity FixityInformation:
type: IntegrityMetadata
may_include: [algorithm, digest, calculation_time, object_scope]
rule fixity:
fixity MUST preserve algorithm and object scope
rule fixity_not_authenticity:
fixity != complete authenticity evidence
entity ArchiveFixityCheck:
type: ArchiveEvent
may_include: [object, expected_digest, observed_digest, algorithm, outcome, timestamp]
rule fixity_check:
mismatch SHOULD trigger preservation investigation
entity ArchiveFormatMetadata:
type: TechnicalMetadata
may_include:
- format_identifier
- format_name
- format_version
- media_type
- signature
- registry_reference
rule format:
filename extension != definitive format
entity FormatRisk:
type: PreservationRisk
may_include:
- format
- obsolescence_risk
- support_state
- migration_priority
- assessment_time
# ---------- EVENTS ----------
entity ArchiveEvent:
type: PreservationEvent
may_be:
- ArchiveIngest
- ArchiveFixityCheck
- ArchiveValidation
- ArchiveMigration
- ArchiveReplication
- ArchiveRecovery
- ArchiveAccessEvent
- ArchiveMetadataUpdate
- ArchiveDeletion
may_include:
- event_identifier
- event_type
- event_time
- object
- agent
- outcome
- detail
rule event:
ArchiveEvent SHOULD preserve event identity, time, agent, object, and outcome
entity ArchiveMigration:
type: ArchiveEvent
may_include:
- source_object
- resulting_object
- source_format
- target_format
- tool
- tool_version
- parameters
- validation_result
rule migration:
archive migration SHOULD preserve source-to-result derivation
rule migration_identity:
migrated File != source File
entity ArchiveReplication:
type: ArchiveEvent
may_include:
- source_copy
- destination_copy
- source_storage
- destination_storage
- fixity_result
rule replication:
replicated archival copy SHOULD preserve source relationship and integrity evidence
entity ArchiveRecovery:
type: ArchiveEvent
may_include: [incident, recovery_source, restored_object, validation_result]
# ---------- PROVENANCE / AUTHENTICITY ----------
entity ArchiveAgent:
type: Agent
may_be: [Person, Organization, SoftwareAgent, AutomatedProcess]
entity ArchiveProvenance:
type: ProvenanceMetadata
may_include:
- origin
- creator
- depositor
- custody_history
- ingest_source
- archive_events
- transformations
- agents
- versions
rule provenance:
DigitalArchive SHOULD preserve chain of custody and transformation history
entity ArchiveAuthenticity:
type: AuthenticityEvidence
may_include:
- provenance
- fixity_history
- digital_signatures
- custody_history
- validation_history
- event_history
rule authenticity:
authenticity SHOULD be assessed from multiple evidence sources
# ---------- RIGHTS / ACCESS ----------
entity ArchiveRights:
type: RightsMetadata
may_include:
- rights_holder
- licence
- preservation_permission
- migration_permission
- replication_permission
- access_permission
- restriction
- embargo
- validity_period
rule rights:
preservation permission != access permission
entity ArchiveAccessPolicy:
type: AccessPolicy
may_include:
- access_level
- user_class
- embargo
- authentication_requirement
- authorisation_requirement
- dissemination_rules
rule access:
archive possession != unrestricted public access
entity ArchiveAccessCopy:
type: Representation
purpose: Access
entity ArchivePreservationMaster:
type: Representation
purpose: Preservation
rule access_copy:
ArchiveAccessCopy != ArchivePreservationMaster
unless explicitly designated
# ---------- STORAGE / RETENTION ----------
entity ArchiveStorage:
type: PreservationStorage
may_include:
- storage_identifier
- storage_type
- storage_location
- encryption
- replication_state
- integrity_monitoring
- availability_state
rule storage:
storage location != archival object identity
entity ArchiveStorageCopy:
type: PreservationCopy
may_include: [copy_identifier, source_object, storage, fixity, creation_time]
rule storage_copy:
multiple storage copies MAY preserve same archival object
while remaining distinct copies
entity ArchiveRetentionPolicy:
type: RetentionPolicy
may_include:
- retention_period
- retain_until
- review_date
- disposal_authority
- legal_hold
entity ArchiveDeletion:
type: ArchiveEvent
may_include: [object, authority, reason, policy, verification]
rule disposal:
archival deletion SHOULD preserve authorised audit evidence
where policy permits
# ---------- DISCOVERY / INDEX ----------
entity ArchiveDiscoveryMetadata:
type: SearchMetadata
may_include:
- searchable_fields
- collection_hierarchy
- subjects
- entities
- concepts
- dates
- identifiers
rule discovery:
discovery metadata SHOULD preserve relationship
to authoritative archival object
entity ArchiveIndex:
type: SearchIndex
indexes: ArchivalObjects
rule archive_index:
ArchiveIndex != DigitalArchive
rule stale_index:
stale ArchiveIndex != stale archival object
# ---------- POLICY / RISK ----------
entity ArchivePreservationPolicy:
type: PolicyMetadata
may_include:
- preservation_scope
- accepted_formats
- fixity_schedule
- replication_requirements
- migration_policy
- retention_policy
- authenticity_requirements
rule policy:
preservation actions SHOULD be traceable
to applicable policy where possible
entity ArchiveRisk:
type: PreservationRisk
may_include:
- format_risk
- storage_risk
- dependency_risk
- integrity_risk
- rights_risk
- access_risk
- risk_level
- assessment_time
rule risk:
ArchiveRisk SHOULD preserve assessment method and time
# ---------- VALIDATION ----------
validation:
require:
- identifiable_digital_archive_or_archival_object
validate_if_present:
- archive_identifier
- collection_identifier
- object_identifier
- information_package
- format
- fixity
- archive_events
- provenance
- authenticity
- rights
- storage
- retention
- access_policy
reject:
- archive_location_presented_as archive_identity
- collection_presented_as archive_identity
- filename_presented_as persistent_object_identity
- file_extension_presented_as definitive_format
- checksum_without_algorithm
- fixity_presented_as complete_authenticity_proof
- SIP_presented_as AIP_without transformation_or_ingest_context
- AIP_presented_as DIP_without dissemination_context
- access_copy_presented_as preservation_master_without evidence
- archive_index_presented_as authoritative_archive
# ---------- SEMANTIC EQUIVALENCE ----------
SEMANTIC_EQUIVALENCE:
"digital archive" ~= "repository preserving digital archival resources"
"archival collection" ~= "collection of related archival objects"
"archival information package" ~= "AIP"
"submission information package" ~= "SIP"
"dissemination information package" ~= "DIP"
"archive fixity" ~= "integrity metadata for archival object"
PRESERVE distinctions:
digital_archive != archival_collection
archive != archive_index
intellectual_entity != representation
representation != file
file != bitstream
SIP != AIP
AIP != DIP
package_identity != intellectual_entity_identity
fixity != authenticity
storage_location != object_identity
access_copy != preservation_master
preservation_permission != access_permission
# ---------- CONFIDENCE ----------
CONFIDENCE:
explicit_archive_metadata:
score: 1.00
persistent_archive_identifier:
score: 1.00
persistent_object_identifier:
score: 1.00
verified_fixity:
score: 0.99
validated_AIP:
score: 0.99
complete_archive_provenance:
score: 0.99
validated_format:
score: 0.99
inferred_collection_membership:
score: <= 0.85
extension_only_format:
score: <= 0.70
incomplete_archive_provenance:
score: <= 0.60
action: preserve uncertainty
# ---------- UPDATE MODEL ----------
UPDATE_MODEL:
on_archive_ingest:
- receive SIP
- validate submission
- assign persistent identifiers
- identify formats
- calculate fixity
- create AIP
- assign storage
- record ArchiveIngest
- initialise provenance
on_fixity_check:
- retrieve expected fixity
- calculate observed fixity
- compare values
- record ArchiveFixityCheck
- trigger investigation on mismatch
on_migration:
- preserve source AIP or object
- create migrated representation
- validate target
- calculate new fixity
- record ArchiveMigration
- update AIP and provenance
on_replication:
- create ArchiveStorageCopy
- assign destination storage
- verify fixity
- record ArchiveReplication
- update storage state
on_access_request:
- evaluate ArchiveAccessPolicy
- create or select ArchiveAccessCopy
- create DIP where applicable
- preserve source relationship
# ---------- FLOW HASH ----------
FLOW_HASH:
inputs:
- ontology
- archive_entities
- relationships
- package_rules
- fixity_rules
- event_rules
- provenance_rules
- rights_rules
- storage_rules
- validation
- semantic_equivalence
- confidence
- update_model
canonicalisation:
- preserve_archive_and_object_identifiers
- preserve_collection_hierarchy
- preserve_package_types
- preserve_fixity_algorithm_and_digest
- preserve_event_order
- preserve_custody_history
- preserve_rule_order
output:
deterministic_semantic_hash
# ---------- AI CONSUMPTION ----------
AI_CONSUMPTION:
interpret_as:
- digital preservation metadata ontology
- digital archive and collection model
- archival information-package structure
- preservation, storage, access, and provenance lifecycle
operations:
- identify DigitalArchive
- traverse archival collections
- resolve archival objects
- distinguish intellectual entities, representations, files, and bitstreams
- resolve SIP, AIP, and DIP packages
- validate formats and fixity
- traverse archival events
- trace migration, replication, recovery, and disposal
- evaluate provenance and authenticity
- inspect rights and access policies
- inspect storage copies and retention
- query archive discovery metadata
- evaluate preservation risk
- preserve uncertainty
constraints:
- do_not_equate_archive_with collection
- do_not_equate_archive_with search_index
- do_not_equate_filename_with persistent_identity
- do_not_equate_file_extension_with verified_format
- do_not_equate_fixity_with complete_authenticity
- do_not_equate_SIP_with AIP_or_DIP
- do_not_equate_access_copy_with preservation_master
- preserve_identifiers_packages_fixity_events_rights_storage_and_provenance
# ---------- QUERY MODEL ----------
query:
input:
- archive_identifier
- collection_identifier
- object_identifier
- package_identifier
- package_type
- format
- fixity
- event_type
- storage_identifier
- access_state
resolve:
1. identify DigitalArchive
2. resolve ArchivalCollection and ArchivalObject
3. resolve object hierarchy
4. inspect SIP, AIP, or DIP relationships
5. inspect format and fixity
6. traverse ArchiveEvents
7. inspect provenance and authenticity
8. inspect rights, access, storage, and retention
9. evaluate risk and preservation policy
10. return confidence
output:
- digital_archive
- archive_identifier
- collection
- archival_object
- object_hierarchy
- information_packages
- formats
- fixity
- events
- provenance
- authenticity
- rights
- access
- storage
- retention
- risk
- confidence
# ---------- INFERENCE ----------
inference:
IF valid SIP is successfully ingested
THEN create AIP candidate
WITH ingest provenance
IF AIP is transformed for authorised access
THEN create DIP candidate
while preserving source AIP relationship
IF fixity check matches expected digest
THEN infer byte-level integrity match
within algorithm scope
IF archive index is stale
THEN preserve archival object state independently
AND expose discovery-index freshness uncertainty
IF archival provenance is incomplete
THEN preserve authenticity uncertainty
AND do_not infer complete authenticity
# ---------- OUTPUT CONTRACT ----------
output:
ontology_entity: DigitalArchive
archive_identity: machine_interpretable
collections: hierarchical_and_traversable
archival_objects: persistently_identified
object_levels: distinguishable
SIP_AIP_DIP: explicit
formats_and_fixity: validated
archive_events: traversable
provenance_and_authenticity: evidence_based
rights_and_access: distinguishable
storage_copies: traceable
retention_and_disposal: policy_aware
discovery_index: source_linked
preservation_risk: reportable
uncertainty: explicit
long_term_retrieval: enabled
end flow
Download Code
Copy to Clipboard