FLOW ALGEBRA
Digital Library Ontology
Kireth Semantic Research Archive
PAGE:
https://kirethresearch.org/booksai-core/ontologies/computing-ontologies/information-systems/digital-library-ontology.html
AUTHORS:
Mark Anthony Higgins — Sky (Recursive AI)
FLOW "DigitalLibraryOntology" v4.0
# ---------- DOMAIN ----------
DOMAIN := ComputingOntology
SUBDOMAIN := InformationSystems
ONTOLOGY := DigitalLibraryOntology
# ---------- PRIMARY ENTITY ----------
ENTITY DigitalLibrary {
definition:
"An organised information system that acquires, describes, preserves,
indexes, manages and provides controlled access to digital resources
and their metadata for discovery, retrieval, study and long-term use.";
objectives: [
DigitalCollectionManagement,
ResourceDiscovery,
MetadataManagement,
InformationRetrieval,
DigitalPreservation,
ControlledAccess,
KnowledgeAccess
];
}
# ---------- CORE ENTITIES ----------
DigitalResource := {
DigitalBook,
Article,
Document,
Dataset,
Image,
Audio,
Video,
Manuscript,
ArchiveItem,
WebResource
};
LibraryEntity := {
Collection,
Repository,
Catalogue,
MetadataRecord,
Index,
User,
Curator,
Institution
};
ResourceState := {
Acquired,
Ingested,
Catalogued,
Available,
Restricted,
Archived,
Withdrawn
};
MetadataType := {
DescriptiveMetadata,
StructuralMetadata,
AdministrativeMetadata,
PreservationMetadata,
RightsMetadata
};
# ---------- FUNDAMENTAL RELATIONSHIPS ----------
DigitalLibrary CONTAINS Collection;
Collection CONTAINS DigitalResource;
DigitalResource DESCRIBED_BY MetadataRecord;
MetadataRecord STORED_IN Catalogue;
Index REFERENCES DigitalResource;
Repository STORES DigitalResource;
User SEARCHES CatalogueOrIndex;
User ACCESSES DigitalResource;
Curator MANAGES Collection;
# ---------- RESOURCE LIFECYCLE ----------
DigitalResourceLifecycle :=
Acquire
-> Ingest
-> Validate
-> Describe
-> Classify
-> Index
-> Store
-> ProvideAccess
-> Preserve
-> Review
-> ArchiveOrWithdraw;
# ---------- ACQUISITION ----------
Acquisition :=
IdentifyResource
-> Evaluate
-> Obtain
-> RecordProvenance;
AcquisitionSource MAY_BE {
Publisher,
Author,
Institution,
DigitisationProject,
DataRepository,
WebSource
};
# ---------- INGEST ----------
Ingest :=
ReceiveDigitalObject
-> ValidateFile
-> ExtractMetadata
-> CreateRepositoryRecord
-> StoreObject
-> GenerateIndexEntry;
IF FileValidationFails
THEN IngestStatus := ReviewRequired;
# ---------- DIGITAL OBJECT ----------
DigitalObject :=
ContentFile
+ Metadata
+ Identifier
+ Relationships;
DigitalObject MAY_HAVE MultipleFiles;
DigitalObject MAY_HAVE MultipleRepresentations;
# ---------- IDENTIFIER ----------
PersistentIdentifier :=
StableReferenceToDigitalResource;
Identifier MAY_BE {
DOI,
Handle,
URI,
RepositoryIdentifier
};
PersistentIdentifier SUPPORTS LongTermReference;
# ---------- METADATA ----------
MetadataRecord :=
StructuredDescriptionOf DigitalResource;
DescriptiveMetadata MAY_INCLUDE {
Title,
Creator,
Subject,
Description,
Publisher,
Date,
Language
};
AdministrativeMetadata MAY_INCLUDE {
AcquisitionSource,
FileFormat,
AccessStatus,
ManagementInformation
};
PreservationMetadata MAY_INCLUDE {
Fixity,
Format,
PreservationAction,
Provenance
};
# ---------- CATALOGUING ----------
Cataloguing :=
CreateMetadataRecord
-> ApplyStandards
-> AssignIdentifiers
-> Classify
-> ValidateRecord;
Catalogue CONTAINS MetadataRecord;
# ---------- CLASSIFICATION ----------
Classification :=
AssignResourceToCategoryOrSubjectStructure;
ClassificationSystem MAY_BE {
Taxonomy,
SubjectHeading,
Ontology,
ClassificationScheme
};
DigitalResource CLASSIFIED_BY ClassificationTerm;
# ---------- INDEXING ----------
Indexing :=
ExtractSearchableTermsAndFields
-> BuildIndex;
SearchIndex MAY_INCLUDE {
FullText,
MetadataFields,
SubjectTerms,
Identifiers
};
IF ResourceUpdated
THEN Index SHOULD_BE Updated;
# ---------- COLLECTION ----------
Collection :=
OrganisedSetOfDigitalResources;
Collection MAY_BE_DEFINED_BY {
Subject,
Institution,
ResourceType,
TimePeriod,
Project
};
Collection HAS CollectionMetadata;
# ---------- REPOSITORY ----------
DigitalRepository :=
ManagedStorageForDigitalObjects;
Repository MAY_PROVIDE {
Storage,
Versioning,
AccessControl,
Preservation,
Retrieval
};
# ---------- SEARCH ----------
Search :=
UserQuery
-> ParseQuery
-> SearchIndex
-> RankResults
-> ReturnResources;
SearchField MAY_INCLUDE {
Title,
Author,
Subject,
FullText,
Date,
Identifier
};
# ---------- INFORMATION RETRIEVAL ----------
RetrievalScore :=
f(
QueryMatch,
MetadataMatch,
FullTextMatch,
SemanticRelevance
);
SearchResult RANKED_BY RetrievalScore;
# ---------- SEMANTIC SEARCH ----------
SemanticSearch :=
InterpretQueryMeaning
-> MapToConcepts
-> ExpandRelatedTerms
-> RetrieveConceptuallyRelevantResources;
Ontology MAY_SUPPORT SemanticSearch;
# ---------- BROWSING ----------
Browse :=
NavigateCollectionOrClassificationStructure;
BrowsePath MAY_USE {
Subject,
Creator,
Date,
Collection,
ResourceType
};
# ---------- ACCESS ----------
AccessPolicy DETERMINES ResourceAvailability;
AccessStatus := {
Open,
Restricted,
Embargoed,
Closed
};
IF ResourceOpen
THEN AuthorisedUser MAY_ACCESS;
IF ResourceRestricted
THEN PermissionRequired := true;
# ---------- RIGHTS ----------
RightsMetadata :=
InformationAboutPermittedUseAndOwnership;
Rights MAY_INCLUDE {
Copyright,
Licence,
AccessRestriction,
ReusePermission
};
DigitalLibrary SHOULD_PRESERVE RightsInformation;
# ---------- DIGITISATION ----------
Digitisation :=
PhysicalResource
-> Capture
-> DigitalRepresentation
-> QualityControl
-> Metadata
-> Repository;
DigitisedResource IS_A DigitalResource;
# ---------- DIGITAL PRESERVATION ----------
DigitalPreservation :=
ActionsEnsuringContinuedAccessOverTime;
PreservationStrategy MAY_INCLUDE {
Replication,
Migration,
FormatConversion,
IntegrityChecking,
RedundantStorage
};
# ---------- FIXITY ----------
Fixity :=
EvidenceThatDigitalObjectHasNotUnexpectedlyChanged;
Checksum MAY_SUPPORT FixityVerification;
IF StoredChecksum != RecomputedChecksum
THEN IntegrityAlert := true;
# ---------- FORMAT PRESERVATION ----------
FileFormat HAS {
FormatName,
Version,
SupportStatus
};
IF FileFormatObsoleteOrAtRisk
THEN PreservationMigration MAY_BE_REQUIRED;
# ---------- VERSIONING ----------
DigitalResource MAY_HAVE Version;
VersionRecord MAY_INCLUDE {
VersionIdentifier,
ModificationDate,
ChangeDescription
};
Versioning SUPPORTS ResourceHistory;
# ---------- PROVENANCE ----------
ResourceProvenance :=
RecordOfResourceOriginAndTransformations;
Provenance MAY_INCLUDE {
Source,
Creator,
Acquisition,
Digitisation,
Migration,
Modification
};
# ---------- INTEROPERABILITY ----------
DigitalLibraryInteroperability MAY_REQUIRE {
MetadataCompatibility,
IdentifierCompatibility,
ProtocolCompatibility,
SemanticCompatibility
};
MetadataCrosswalk MAPS FieldsBetweenMetadataSchemas;
# ---------- FEDERATED SEARCH ----------
FederatedSearch :=
QueryMultipleRepositories
-> MergeResults
-> RankOrGroup
-> Present;
FederatedSearch MAY_EXPAND DiscoveryAcrossLibraries;
# ---------- USER ----------
LibraryUser MAY_HAVE {
Identity,
Role,
SearchHistory,
AccessPermission
};
User MAY {
Search,
Browse,
View,
Download,
Cite
};
# ---------- CURATION ----------
DigitalCuration :=
Select
-> Describe
-> Organise
-> Preserve
-> Maintain
-> Enhance;
Curator PERFORMS DigitalCuration;
# ---------- AUDIT ----------
LibraryAuditRecord :=
{
Actor,
Action,
Resource,
Time,
Outcome
};
AuditTrail SUPPORTS GovernanceAndAccountability;
# ---------- QUALITY ----------
DigitalLibraryQuality := {
MetadataQuality,
ResourceIntegrity,
Findability,
Accessibility,
PreservationQuality,
CollectionCoverage
};
# ---------- SEMANTIC REASONING ----------
IF SystemOrganisesDigitalResources
AND ProvidesMetadataSearchAndControlledAccess
THEN DigitalLibraryClassification := supported;
IF ResourceHasPersistentIdentifier
THEN LongTermReferencingPotential := increase;
IF MetadataIncomplete
THEN DiscoveryQuality := decrease;
IF FixityCheckFails
THEN ResourceIntegrity := suspect;
IF FileFormatAtRisk
THEN PreservationAction := evaluate;
IF ResourceRestricted
AND UserLacksPermission
THEN Access := Deny;
IF OntologyLinksRelatedConcepts
THEN SemanticDiscoveryPotential := increase;
# ---------- SEMANTIC EQUIVALENCE ----------
SEMANTIC_EQUIVALENCE {
"digital library" ~= "electronic library" WHEN context == managed_digital_collection;
"digital repository" ~= "digital object repository";
"metadata record" ~= "catalogue record" WHEN context == digital_library;
"digital preservation" ~= "long-term digital preservation";
"persistent identifier" ~= "persistent digital identifier";
"full-text search" ~= "content search";
"federated search" ~= "distributed library search";
"digital curation" ~= "digital collection curation";
}
# ---------- QUERY FLOW ----------
QUERY(q) ->
NORMALISE(q) ->
IDENTIFY_DIGITAL_RESOURCE(q) ->
IDENTIFY_COLLECTION(q) ->
IDENTIFY_METADATA(q) ->
IDENTIFY_IDENTIFIER(q) ->
IDENTIFY_CLASSIFICATION(q) ->
IDENTIFY_ACCESS_STATUS(q) ->
IDENTIFY_PRESERVATION_STATE(q) ->
MAP_TO_ONTOLOGY(q) ->
APPLY_REASONING(q) ->
SCORE_CONFIDENCE(q) ->
RETURN_RELEVANT_KNOWLEDGE;
# ---------- CONFIDENCE ----------
CONFIDENCE(assertion) :=
weighted_mean(
source_reliability,
metadata_quality,
preservation_evidence,
semantic_consistency,
contextual_relevance
);
CONFIDENCE >= 0.90 => HIGH;
CONFIDENCE >= 0.70 AND < 0.90 => MODERATE;
CONFIDENCE < 0.70 => REVIEW;
# ---------- AI CONSUMPTION ----------
AI_CONSUMPTION {
primary_entity: DigitalLibrary;
ontology: DigitalLibraryOntology;
parse_entities: true;
parse_relationships: true;
preserve_relationship_direction: true;
resolve_semantic_equivalence: true;
execute_reasoning_rules: true;
apply_confidence_weighting: true;
preserve_provenance: true;
}
# ---------- UPDATE MODEL ----------
UPDATE_MODEL {
new_resource:
validate
-> identify_format
-> assign_identifier
-> create_metadata
-> classify
-> index
-> integrate;
metadata_revision:
preserve_previous_record
-> validate_new_metadata
-> update_catalogue
-> update_index
-> integrate;
preservation_event:
identify_resource
-> record_action
-> update_format_or_fixity
-> preserve_provenance
-> integrate;
collection_revision:
update_membership
-> update_collection_metadata
-> recompute_relationships
-> regenerate_flow_hash;
conflict:
preserve_provenance
-> compare_evidence
-> adjust_confidence
-> flag_review;
}
# ---------- FLOW HASH ----------
FLOW_HASH_INPUT :=
DOMAIN
+ SUBDOMAIN
+ ONTOLOGY
+ DigitalResource
+ LibraryEntity
+ ResourceState
+ MetadataType
+ DigitalResourceLifecycle
+ DigitalPreservation
+ RELATIONSHIPS
+ SEMANTIC_REASONING
+ SEMANTIC_EQUIVALENCE
+ UPDATE_MODEL;
FLOW_HASH :=
HASH(FLOW_HASH_INPUT);
# ---------- TERMINAL ----------
DigitalLibraryOntology
-> AcquireDigitalResource
-> ValidateAndIngest
-> AssignPersistentIdentifier
-> CreateMetadataRecord
-> ClassifyAndIndex
-> StoreInRepository
-> SearchAndRetrieve
-> ControlResourceAccess
-> PreserveRightsAndProvenance
-> VerifyDigitalIntegrity
-> ApplyPreservationActions
-> MaintainDiscoverableDigitalCollection;
END FLOW
Download Code
Copy to Clipboard