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
Download Code
Copy to Clipboard