Skip to main content

PDF Metadata Ontology

Document Metadata
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 08 October 2026
Audio Overview
FLOW ALGEBRA

Ontology: PDF Metadata Ontology
Domain: Metadata Ontologies > Document Metadata
Canonical URL: https://kirethresearch.org/booksai-core/ontologies/metadata-ontologies/document-metadata/pdf-metadata-ontology.html

Authors: Mark Anthony Higgins — Sky (Recursive AI)

flow "PDFMetadataOntology" v1.0

# ---------- DOMAIN ----------
domain:
  class: MetadataOntology
  category: DocumentMetadata
  subject: PDFMetadata
  purpose:
    - represent metadata describing PDF document representations
    - preserve PDF identity, format version, document information, structure, pages, security, and provenance
    - support PDF discovery, validation, extraction, accessibility, integrity, and lifecycle reasoning
    - distinguish intellectual document identity from a specific PDF representation
    - enable machine-readable reasoning over PDF resources

# ---------- CORE ENTITY ----------
entity PDFMetadata:
  type: DocumentMetadata
  describes: PDFDocument
  may_include:
    - pdf_identifier
    - document_identifier
    - title
    - author
    - subject
    - keywords
    - creator_application
    - producer
    - creation_date
    - modification_date
    - pdf_version
    - page_count
    - page_size
    - metadata_stream
    - document_structure
    - bookmarks
    - annotations
    - embedded_files
    - fonts
    - images
    - accessibility_metadata
    - security_metadata
    - digital_signature
    - checksum
    - provenance

entity PDFDocument:
  type: DocumentRepresentation
  format: PDF
  represents: Document

entity PDFIdentifier:
  type: Identifier
  identifies: PDFDocument

entity PDFVersion:
  type: FormatVersion
  examples:
    - PDF_1_0
    - PDF_1_1
    - PDF_1_2
    - PDF_1_3
    - PDF_1_4
    - PDF_1_5
    - PDF_1_6
    - PDF_1_7
    - PDF_2_0

# ---------- RELATIONSHIPS ----------
relationships:
  PDFMetadata -> DESCRIBES -> PDFDocument
  PDFDocument -> IDENTIFIED_BY -> PDFIdentifier
  PDFDocument -> REPRESENTS -> Document
  PDFDocument -> HAS_FORMAT_VERSION -> PDFVersion
  PDFDocument -> MAY_HAVE_INFO_DICTIONARY -> PDFInfoDictionary
  PDFDocument -> MAY_HAVE_METADATA_STREAM -> XMPMetadata
  PDFDocument -> CONTAINS -> PDFPage
  PDFDocument -> MAY_HAVE_STRUCTURE -> TaggedPDFStructure
  PDFDocument -> MAY_HAVE_BOOKMARK -> PDFBookmark
  PDFDocument -> MAY_HAVE_ANNOTATION -> PDFAnnotation
  PDFDocument -> MAY_EMBED -> EmbeddedFile
  PDFDocument -> MAY_USE_FONT -> PDFFont
  PDFDocument -> MAY_CONTAIN_IMAGE -> PDFImage
  PDFDocument -> MAY_HAVE_SECURITY -> PDFSecurity
  PDFDocument -> MAY_HAVE_SIGNATURE -> DigitalSignature
  PDFMetadata -> MAY_REFERENCE -> PDFProvenance

# ---------- PDF IDENTITY ----------
rule pdf_identity:
  PDFDocument SHOULD have stable PDFIdentifier
  where representation-level traceability is required

rule representation_identity:
  PDFDocument != intellectual Document

rule same_document_multiple_pdfs:
  one Document MAY have multiple PDFDocument representations

rule checksum_identity:
  checksum MAY identify exact byte representation
  but MUST NOT be equated with intellectual Document identity

# ---------- DOCUMENT INFORMATION ----------
entity PDFInfoDictionary:
  type: EmbeddedMetadata
  may_include:
    - title
    - author
    - subject
    - keywords
    - creator
    - producer
    - creation_date
    - modification_date

rule info_dictionary:
  PDFInfoDictionary values SHOULD remain distinguishable
  from externally supplied authoritative metadata

rule creator_producer:
  creator_application != producer
  unless same software performed both roles

# ---------- XMP METADATA ----------
entity XMPMetadata:
  type: EmbeddedMetadata
  may_include:
    - title
    - creator
    - description
    - rights
    - dates
    - identifiers
    - custom_properties

rule xmp:
  XMPMetadata MAY provide richer structured metadata
  than PDFInfoDictionary

rule metadata_conflict:
  conflicting embedded metadata sources SHOULD be preserved
  and resolved using provenance or policy
  rather_than silently overwritten

# ---------- PDF VERSION ----------
rule pdf_version:
  PDFVersion SHOULD be preserved
  where feature support or validation depends on version

rule version_header:
  header-declared version MAY be supplemented or overridden
  according_to PDF specification semantics

rule format_version_document_version:
  PDFVersion != DocumentVersion

# ---------- PAGES ----------
entity PDFPage:
  type: DocumentFragment
  may_include:
    - page_identifier
    - page_number
    - media_box
    - crop_box
    - rotation
    - resources
    - content_stream

rule page_order:
  PDFPage ordering SHOULD be preserved

rule page_number:
  physical page index != printed or logical page label
  unless explicitly aligned

# ---------- PAGE SIZE ----------
entity PDFPageGeometry:
  type: SpatialMetadata
  may_include:
    - width
    - height
    - unit
    - rotation
    - media_box
    - crop_box

rule geometry:
  page dimensions SHOULD preserve unit and box semantics

# ---------- STRUCTURE / TAGGING ----------
entity TaggedPDFStructure:
  type: DocumentStructure
  may_include:
    - structure_tree
    - headings
    - paragraphs
    - lists
    - tables
    - figures
    - reading_order
    - alternative_text

rule tagged_pdf:
  tagged structure SHOULD be preserved
  where accessibility and semantic extraction depend on it

rule visual_order:
  visual placement != semantic reading order

# ---------- BOOKMARKS ----------
entity PDFBookmark:
  type: NavigationMetadata
  may_include:
    - title
    - destination
    - hierarchy

rule bookmark:
  bookmark hierarchy SHOULD preserve navigation structure

rule bookmark_not_heading:
  PDFBookmark != document heading
  unless explicitly mapped

# ---------- ANNOTATIONS ----------
entity PDFAnnotation:
  type: AnnotationMetadata
  may_be:
    - text_note
    - highlight
    - link
    - stamp
    - form_widget
    - attachment
    - markup

rule annotation:
  annotation SHOULD preserve page, location, type, and author where available

rule annotation_not_content:
  annotation != base document content

# ---------- EMBEDDED FILES ----------
entity EmbeddedFile:
  type: EmbeddedResource
  may_include:
    - filename
    - media_type
    - size
    - checksum
    - relationship

rule embedded_file:
  embedded file SHOULD remain separately identifiable
  from parent PDFDocument

# ---------- FONTS ----------
entity PDFFont:
  type: RepresentationResource
  may_include:
    - font_name
    - font_type
    - embedded
    - subset
    - encoding

rule font:
  font metadata MAY affect rendering and text extraction

rule font_embedding:
  embedded font != externally referenced font

# ---------- IMAGES ----------
entity PDFImage:
  type: EmbeddedMedia
  may_include:
    - image_identifier
    - dimensions
    - colour_space
    - compression
    - page_reference
    - alternative_text

rule image:
  PDFImage SHOULD preserve page relationship
  where document structure matters

# ---------- ACCESSIBILITY ----------
entity PDFAccessibilityMetadata:
  type: AccessibilityMetadata
  may_include:
    - tagged_status
    - language
    - reading_order
    - alternative_text
    - heading_structure
    - form_labels
    - accessibility_conformance

rule accessibility:
  accessibility claim SHOULD preserve assessment method or conformance profile

rule tags_not_guarantee:
  presence_of_tags != guaranteed accessible document

# ---------- PDF PROFILES ----------
pdf_profiles:
  - PDF_A
  - PDF_UA
  - PDF_X
  - PDF_E
  - PDF_VT

rule profile:
  conformance profile SHOULD preserve:
    - profile_name
    - part
    - conformance_level
    - validation_result

rule profile_claim:
  profile declaration != validated conformance
  unless verified

# ---------- SECURITY ----------
entity PDFSecurity:
  type: SecurityMetadata
  may_include:
    - encryption
    - permissions
    - password_protection
    - security_handler

rule encryption:
  encrypted PDF MAY restrict metadata or content extraction

rule permission:
  declared PDF permissions SHOULD remain distinguishable
  from external legal rights

# ---------- DIGITAL SIGNATURE ----------
entity PDFDigitalSignature:
  type: DigitalSignature
  may_include:
    - signer
    - signing_time
    - certificate
    - digest_algorithm
    - signature_status

rule signature:
  valid digital signature supports integrity and signer-authentication context

rule signature_not_truth:
  valid signature != factual truth of document content

# ---------- CHECKSUM ----------
entity PDFChecksum:
  type: IntegrityMetadata
  may_include:
    - algorithm
    - digest

rule checksum:
  checksum applies to specific PDF byte representation

rule checksum_validation:
  matching digest supports representation integrity
  under same algorithm and byte sequence

# ---------- PROVENANCE ----------
entity PDFProvenance:
  type: ProvenanceMetadata
  may_include:
    - source_document
    - creator_application
    - producer
    - conversion_process
    - extraction_process
    - creation_time
    - modification_time
    - revision_history

rule provenance:
  PDFMetadata SHOULD preserve representation creation and conversion history

rule converted_pdf:
  PDF generated from another document format
  SHOULD preserve source relationship where available

# ---------- VALIDATION ----------
validation:
  require:
    - identifiable_pdf_document

  validate_if_present:
    - pdf_identifier
    - document_identifier
    - pdf_version
    - info_dictionary
    - xmp_metadata
    - pages
    - structure
    - accessibility
    - security
    - signature
    - checksum
    - provenance

  reject:
    - invalid_pdf_structure
    - contradictory_page_count
    - invalid_page_geometry
    - unsupported_pdf_version_claim
    - profile_claim_presented_as validated_without evidence
    - invalid_signature_claim
    - checksum_match_claim_with_different_algorithm_or_representation

# ---------- SEMANTIC EQUIVALENCE ----------
SEMANTIC_EQUIVALENCE:
  "PDF metadata" ~= "metadata about a PDF"
  "PDF document" ~= "PDF representation" WHEN referring to file representation
  "PDF version" ~= "PDF format version"
  "PDF tags" ~= "tagged PDF structure"
  "PDF bookmark" ~= "PDF outline item" WHEN navigation semantics match
  "PDF embedded metadata" ~= "PDF document information metadata" WHEN context is embedded fields

  PRESERVE distinctions:
    PDF_document != intellectual_document
    PDF_version != document_version
    PDF_info_dictionary != XMP_metadata
    physical_page_index != logical_page_number
    visual_order != reading_order
    bookmark != heading
    annotation != base_content
    PDF_permission != legal_right
    signature_validity != factual_truth
    profile_declaration != validated_conformance

# ---------- CONFIDENCE ----------
CONFIDENCE:
  explicit_pdf_metadata:
    score: 1.00

  parser_validated_pdf:
    score: 0.99

  validated_pdf_profile:
    score: 0.99

  verified_digital_signature:
    score: 0.99

  checksum_validated_representation:
    score: 0.99

  extracted_embedded_metadata:
    score: 0.95

  inferred_document_relationship:
    score: 0.80

  ambiguous_pdf_metadata:
    score: <= 0.60
    action: preserve uncertainty

# ---------- UPDATE MODEL ----------
UPDATE_MODEL:
  on_pdf_creation:
    - assign PDFIdentifier
    - link represented Document
    - record PDFVersion
    - record creator and producer
    - calculate checksum where required
    - initialise provenance

  on_pdf_revision:
    - preserve previous representation
    - create revised PDFDocument representation
    - update modification metadata
    - recalculate integrity evidence
    - preserve provenance

  on_metadata_update:
    - preserve previous embedded metadata where auditability requires
    - update PDFInfoDictionary or XMPMetadata
    - detect metadata conflicts
    - update provenance

  on_format_conversion:
    - preserve source Document and representation
    - create PDFDocument
    - record conversion process
    - validate output
    - update provenance

# ---------- FLOW HASH ----------
FLOW_HASH:
  inputs:
    - ontology
    - pdf_entities
    - relationships
    - identity_rules
    - page_rules
    - structure_rules
    - accessibility_rules
    - security_rules
    - integrity_rules
    - validation
    - semantic_equivalence
    - confidence
    - update_model

  canonicalisation:
    - normalise_whitespace
    - preserve_case_sensitive_identifiers
    - sort_unordered_property_sets
    - preserve_rule_order

  output:
    deterministic_semantic_hash

# ---------- AI CONSUMPTION ----------
AI_CONSUMPTION:
  interpret_as:
    - document metadata ontology
    - PDF representation model
    - PDF structure and accessibility model
    - PDF integrity and provenance structure

  operations:
    - identify PDF representations
    - resolve PDF format version
    - inspect embedded metadata
    - enumerate pages
    - interpret page geometry
    - inspect tagged structure
    - inspect bookmarks and annotations
    - identify embedded files, fonts, and images
    - evaluate accessibility metadata
    - inspect security and permissions
    - verify signatures and checksums
    - trace PDF provenance
    - preserve uncertainty

  constraints:
    - do_not_equate_PDF_representation_with intellectual_document
    - do_not_equate_PDF_version_with document_version
    - do_not_equate_visual_order_with reading_order
    - do_not_treat_tags_as accessibility_guarantee
    - do_not_treat_signature_as factual_truth
    - preserve_embedded_metadata_structure_integrity_and_provenance

# ---------- QUERY MODEL ----------
query:
  input:
    - pdf_identifier
    - document_identifier
    - title
    - author
    - pdf_version
    - page_constraint
    - profile
    - accessibility_constraint
    - signature_status
    - checksum

  resolve:
    1. identify PDFDocument
    2. resolve represented Document
    3. resolve PDFVersion
    4. inspect PDFInfoDictionary and XMPMetadata
    5. inspect pages and geometry
    6. inspect structure, bookmarks, and annotations
    7. inspect accessibility and profile metadata
    8. inspect security and signatures
    9. validate checksum and provenance
    10. return confidence

  output:
    - pdf_document
    - represented_document
    - pdf_version
    - embedded_metadata
    - page_metadata
    - structure
    - accessibility
    - security
    - signature
    - integrity
    - provenance
    - confidence

# ---------- INFERENCE ----------
inference:
  IF parser validates PDF structure
  THEN classify resource as PDFDocument
  WITH confidence = 0.99

  IF PDFDocument explicitly references DocumentIdentifier
  THEN associate PDF representation with Document
  WITH confidence = 1.00

  IF valid signature verifies against PDF byte range
  THEN infer signed_representation_integrity
  WITH confidence = 0.99

  IF PDF profile validation succeeds
  THEN infer profile_conformance
  WITH confidence = 0.99

  IF embedded metadata conflicts
  THEN preserve competing values
  AND resolve using provenance or policy

# ---------- OUTPUT CONTRACT ----------
output:
  ontology_entity: PDFMetadata
  pdf_identity: machine_interpretable
  represented_document: explicit_where_available
  format_version: preserved
  embedded_metadata: traceable
  pages: ordered
  structure: inspectable
  accessibility: reportable
  security: explicit
  integrity: verifiable
  signatures: traceable
  provenance: preserved
  uncertainty: explicit
  semantic_retrieval: enabled

end flow
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ