# Local extensions to the OAIS Information Model schema (oais_im_schema-sh-v5.ttl),
# in the same im: namespace, loaded alongside it.
#
# Two kinds of thing are kept here rather than in the generated schema:
#   - groups of Representation Information, format profiles, the terms for
#     naming descriptions and view specifications as files, where an
#     object's bits are stored, and the semantics of data elements (units,
#     scaling, fill values, valid ranges, code lists), new here and marked
#     oais:status "local-extension". Some were in the RiC bridge
#     (bridge:hasStorageLocation, bridge:structuralPath, ...) or RiC-O
#     itself (rico:hasUnitOfMeasurement, rico:UnitOfMeasurement) until
#     moved here, so that nothing here depends on RiC-O or the bridge to it;
#     the archive renames the old terms in its data at startup;
#   - Designated Community, Preservation Objective and Transformation
#     Information Property, with the properties that relate them, moved here
#     from the generated schema, keeping their identifiers but now marked
#     oais:status "local-extension"; and Agent, who defines or identifies
#     them, moved here too, already a local extension there.
# The knowledge base the schema is generated from, and its workflow, need the
# same changes, or regenerating the schema will bring the moved classes back.

@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix im: <http://ontology.oais.info/im/> .
@prefix oais: <http://ontology.oais.info/meta/> .

# ---- Groups of Representation Information ----
#
# OAIS does not say so explicitly, but a Data Object often needs several
# pieces of Representation Information used together (its Structure AND its
# Semantic Representation Information), and there are often alternatives any
# one of which will do (a DFDL OR a Kaitai Struct description of the same
# structure; Microsoft Excel OR any application that reads OOXML
# spreadsheets). Groups nest: an alternative can itself be an AND group, e.g.
# a DFDL schema AND a DFDL processor to apply it.
#
# A group is itself Representation Information, so it can stand wherever
# Representation Information can -- including as the object of
# im:hasStructureRepresentationInformation, im:hasSemanticRepresentationInformation
# or im:hasOtherRepresentationInformation, whose cardinality of one each is
# unaffected: an OR group of structure descriptions is one Structure
# Representation Information. The groups sit alongside those properties
# rather than replacing them. Group members are unordered unless the group is
# ordered (im:ordered, at the end).

im:RepInfoGroup
  a owl:Class ;
  rdfs:label "Representation Information Group" ;
  oais:status "local-extension" ;
  rdfs:subClassOf im:RepresentationInformation ;
  rdfs:comment "Representation Information Group: Representation Information made up of other Representation Information, its members (im:hasGroupMember), each of which may itself be a group. A group that is neither an AND group nor an OR group is taken to be an AND group. A group may also be typed with the category of Representation Information it provides (Structure, Semantic or Other). LOCAL EXTENSION -- OAIS does not define groups of Representation Information; see also info.oais.infomodel.interfaces.representationinformation.RepInfoGroup in oaisCore." .

im:RepInfoAndGroup
  a owl:Class ;
  rdfs:label "Representation Information AND Group" ;
  oais:status "local-extension" ;
  rdfs:subClassOf im:RepInfoGroup ;
  rdfs:comment "Representation Information AND Group: a group all of whose members must be used together, e.g. the Structure Representation Information and the Semantic Representation Information of a Data Object, or a structure description and the software that applies it. Its members may be of different categories. LOCAL EXTENSION -- see im:RepInfoGroup." .

im:RepInfoOrGroup
  a owl:Class ;
  rdfs:label "Representation Information OR Group" ;
  oais:status "local-extension" ;
  rdfs:subClassOf im:RepInfoGroup ;
  rdfs:comment "Representation Information OR Group: a group whose members are equivalent alternatives, any one of which is enough, e.g. DFDL, Kaitai Struct and DRB descriptions of the same structure, or Microsoft Excel and any application that reads OOXML spreadsheets. The members provide the same category of Representation Information, with which the group may also be typed. Being members of the same OR group asserts their equivalence; like any Information Object, a member may also carry Provenance Information testifying to it. LOCAL EXTENSION -- see im:RepInfoGroup." .

im:hasGroupMember
  a owl:ObjectProperty ;
  rdfs:label "has Group Member" ;
  oais:status "local-extension" ;
  rdfs:domain im:RepInfoGroup ;
  rdfs:range im:RepresentationInformation ;
  rdfs:comment "Links a Representation Information Group to one of its members. Members are unordered unless the group is im:ordered. LOCAL EXTENSION -- see im:RepInfoGroup." .

# ---- Format profiles ----
#
# A format registry identifier such as a PRONOM PUID is generally not enough
# to read a file: PRONOM's x-fmt/111 (plain text) says nothing about the
# character encoding, x-fmt/18 (CSV) nothing about the delimiter, and a
# spreadsheet format has versions and conformance classes. A format profile
# refines a registry identifier with what it leaves out.

im:FormatProfile
  a owl:Class ;
  rdfs:label "Format Profile" ;
  oais:status "local-extension" ;
  rdfs:subClassOf im:StructureRepresentationInformation ;
  rdfs:comment "Format Profile: Structure Representation Information identifying a Data Object's format precisely -- a format registry identifier (e.g. a PRONOM PUID), refined with what the identifier leaves out: the version or conformance class of the specification, the character encoding, line endings, field delimiter and quote character, and the media type -- and pointing to the specification (rdfs:seeAlso). LOCAL EXTENSION -- OAIS does not define it." .

im:formatRegistryIdentifier
  a owl:DatatypeProperty ;
  rdfs:label "format registry identifier" ;
  oais:status "local-extension" ;
  rdfs:domain im:FormatProfile ;
  rdfs:comment "The format's identifier in a format registry, prefixed by the registry, e.g. 'PRONOM fmt/214'. LOCAL EXTENSION -- see im:FormatProfile." .

im:formatVersion
  a owl:DatatypeProperty ;
  rdfs:label "format version" ;
  oais:status "local-extension" ;
  rdfs:domain im:FormatProfile ;
  rdfs:comment "The version or conformance class of the format's specification, e.g. 'ECMA-376 Transitional'. LOCAL EXTENSION -- see im:FormatProfile." .

im:mediaType
  a owl:DatatypeProperty ;
  rdfs:label "media type" ;
  oais:status "local-extension" ;
  rdfs:domain im:FormatProfile ;
  rdfs:comment "The format's IANA media type, e.g. 'text/csv'. LOCAL EXTENSION -- see im:FormatProfile." .

im:characterEncoding
  a owl:DatatypeProperty ;
  rdfs:label "character encoding" ;
  oais:status "local-extension" ;
  rdfs:domain im:FormatProfile ;
  rdfs:comment "The character encoding of a text format, by its IANA charset name, e.g. 'UTF-8'. LOCAL EXTENSION -- see im:FormatProfile." .

im:lineEnding
  a owl:DatatypeProperty ;
  rdfs:label "line ending" ;
  oais:status "local-extension" ;
  rdfs:domain im:FormatProfile ;
  rdfs:comment "How lines end in a text format: 'CRLF', 'LF' or 'CR'. LOCAL EXTENSION -- see im:FormatProfile." .

im:fieldDelimiter
  a owl:DatatypeProperty ;
  rdfs:label "field delimiter" ;
  oais:status "local-extension" ;
  rdfs:domain im:FormatProfile ;
  rdfs:comment "The character separating fields in delimited text, e.g. ',' or 'TAB'. LOCAL EXTENSION -- see im:FormatProfile." .

im:quoteCharacter
  a owl:DatatypeProperty ;
  rdfs:label "quote character" ;
  oais:status "local-extension" ;
  rdfs:domain im:FormatProfile ;
  rdfs:comment "The character enclosing fields that contain the delimiter in delimited text, e.g. '\"'. LOCAL EXTENSION -- see im:FormatProfile." .

# ---- Format identification ----
#
# How a Data Object's format was found: by which tool, from what evidence
# (a byte signature, a container signature, the file extension alone), with
# which signatures, and when -- so that a format known only from a file's
# name can be found and checked again, and tools that disagree can be seen
# to. Each identification names a shared Format Profile: one per format, used
# by every Data Object in it. It corresponds to PREMIS's "format
# identification" event (http://id.loc.gov/vocabulary/preservation/eventType/for)
# and premis:formatRegistryKey.
im:FormatIdentification
  a owl:Class ;
  rdfs:label "Format Identification" ;
  oais:status "local-extension" ;
  rdfs:subClassOf im:ProvenanceInformation ;
  rdfs:seeAlso <http://id.loc.gov/vocabulary/preservation/eventType/for> ;
  rdfs:comment "Format Identification: Provenance Information recording that a tool identified a Data Object's format -- the format it found (im:identifiedFormat), the tool with its version and that of its signatures (im:identificationTool), what the identification rests on (im:identificationBasis: a byte or container signature, or only the file extension), any warning, and when (dc:date). Several, from different tools, may be recorded for one Data Object, agreeing or not. LOCAL EXTENSION -- corresponds to the PREMIS format identification event." .

im:hasFormatIdentification
  a owl:ObjectProperty ;
  rdfs:label "has format identification" ;
  oais:status "local-extension" ;
  rdfs:range im:FormatIdentification ;
  rdfs:comment "Links a Data Object to a Format Identification of it. LOCAL EXTENSION -- see im:FormatIdentification." .

im:identifiedFormat
  a owl:ObjectProperty ;
  rdfs:label "identified format" ;
  oais:status "local-extension" ;
  rdfs:domain im:FormatIdentification ;
  rdfs:range im:FormatProfile ;
  rdfs:comment "The format a Format Identification found: a Format Profile shared by every Data Object in that format. LOCAL EXTENSION -- see im:FormatIdentification." .

im:identificationTool
  a owl:DatatypeProperty ;
  rdfs:label "identification tool" ;
  oais:status "local-extension" ;
  rdfs:domain im:FormatIdentification ;
  rdfs:comment "The tool that identified the format, with its version and the version of the signatures it used, e.g. 'Siegfried 1.11.9 (DROID_SignatureFile_V125.xml; container-signature-20260119.xml)'. LOCAL EXTENSION -- see im:FormatIdentification." .

im:identificationBasis
  a owl:DatatypeProperty ;
  rdfs:label "identification basis" ;
  oais:status "local-extension" ;
  rdfs:domain im:FormatIdentification ;
  rdfs:comment "What a Format Identification rests on, as the tool reports it, e.g. 'byte match at [[0 8]]', 'container name [Content_Types].xml with byte match', 'extension match pdf' -- an extension match alone is weak evidence. LOCAL EXTENSION -- see im:FormatIdentification." .

im:identificationWarning
  a owl:DatatypeProperty ;
  rdfs:label "identification warning" ;
  oais:status "local-extension" ;
  rdfs:domain im:FormatIdentification ;
  rdfs:comment "A warning the identifying tool gave, e.g. that the extension doesn't match the content, or that several formats matched. LOCAL EXTENSION -- see im:FormatIdentification." .

# ---- Containers ----
#
# A packaging container -- a ZIP, tar or gzip file -- bundles files that are
# Data Objects in their own right, each with its own format and
# Representation Information. (A format that is ZIP or OLE2 inside, such as
# DOCX, ODT or EPUB, is a format, not a container: its Data Object is
# interpreted using that format's profile and isn't split up.) The container
# links to each file inside, so whatever follows OAIS properties from the
# container -- an AIP's contents, its export as a bag -- reaches them.
im:containsDataObject
  a owl:ObjectProperty ;
  rdfs:label "contains data object" ;
  oais:status "local-extension" ;
  rdfs:domain im:DataObject ;
  rdfs:range im:DataObject ;
  rdfs:comment "Links a Data Object that is a packaging container (a ZIP, tar or gzip file) to a Data Object inside it, whose bits are those of the file at its im:pathInContainer. The contained Data Object has its own Representation Information. LOCAL EXTENSION -- OAIS describes Data Objects but not files packed inside one another." .

im:pathInContainer
  a owl:DatatypeProperty ;
  rdfs:label "path in container" ;
  oais:status "local-extension" ;
  rdfs:comment "Where a contained Data Object's bits are inside the container that im:containsDataObject it, e.g. 'reports/2025/annual.pdf'. LOCAL EXTENSION -- see im:containsDataObject." .

# ---- Descriptions and view specifications as files ----
#
# What a Representation Information manifest needs to name each description
# explicitly (see oais-structure-manifest): where a file is
# (im:hasStorageLocation, also where a Data Object's own bits are), which
# language a structure description is in, its text, the class generated from
# it where that's how it's applied, and view specifications -- how to view
# decoded data as a table, image, time series or vector.

im:hasStorageLocation
  a owl:ObjectProperty ;
  rdfs:label "has storage location" ;
  oais:status "local-extension" ;
  rdfs:subPropertyOf rdfs:seeAlso ;
  rdfs:comment "Points to the actual retrievable location of an object's bits (e.g. a Dropbox link, cloud storage URI) -- more specific and self-documenting than plain rdfs:seeAlso for this one purpose. Used on an im:DataObject/im:DigitalObject and on a description or view specification given as a file, so it has no declared domain. LOCAL EXTENSION -- OAIS treats where bits are kept, and how they are retrieved, as implementation-specific and out of scope for the reference model." .

im:specificationLanguage
  a owl:DatatypeProperty ;
  rdfs:label "specification language" ;
  oais:status "local-extension" ;
  rdfs:domain im:RepresentationInformation ;
  rdfs:comment "The language a machine-readable description is written in, so software knows how to apply it: 'DFDL', 'Kaitai Struct', 'DRB SDF', 'DRB' (no description: DRB recognises the format itself) or 'drb-python' (a driver package). LOCAL EXTENSION." .

im:specificationText
  a owl:DatatypeProperty ;
  rdfs:label "specification text" ;
  oais:status "local-extension" ;
  rdfs:domain im:RepresentationInformation ;
  rdfs:comment "The full text of a machine-readable description or view specification held in the archive, e.g. a DFDL schema; the archive serves it as a file. LOCAL EXTENSION." .

im:generatedClassName
  a owl:DatatypeProperty ;
  rdfs:label "generated class name" ;
  oais:status "local-extension" ;
  rdfs:domain im:StructureRepresentationInformation ;
  rdfs:comment "For a description applied through code generated from it (a Kaitai Struct .ksy): the fully qualified name of the generated class. LOCAL EXTENSION." .

im:ViewSpecification
  a owl:Class ;
  rdfs:label "View Specification" ;
  oais:status "local-extension" ;
  rdfs:subClassOf im:SemanticRepresentationInformation ;
  rdfs:comment "View Specification: Semantic Representation Information saying how to view decoded data -- as a table (which elements are rows, which columns, with their units and meanings), a time series or a vector -- for tools such as TOPCAT and SPLAT. LOCAL EXTENSION." .

im:viewKind
  a owl:DatatypeProperty ;
  rdfs:label "view kind" ;
  oais:status "local-extension" ;
  rdfs:domain im:ViewSpecification ;
  rdfs:comment "What a view specification shows the data as: 'table', 'image', 'timeSeries' or 'vector'. LOCAL EXTENSION." .

# ---- Semantics of data elements ----
#
# Used by RepInfo Tools when it saves a format description: every element of
# the description (a field, record, choice or choice branch) gets its own
# im:SemanticRepresentationInformation, nested to mirror the description via
# im:interpretedUsingRecurse, with rdfs:label (the semantic name),
# skos:definition and the properties below: where the element sits in the
# structure, its units, how raw values become physical ones, which values
# mean "no data", the valid range, coded values, and links to controlled
# vocabularies. Names follow the CF metadata conventions (scale_factor,
# add_offset, _FillValue, valid_min, valid_max) that scientific data already
# uses.

im:structuralPath
  a owl:DatatypeProperty ;
  rdfs:label "structural path" ;
  oais:status "local-extension" ;
  rdfs:domain im:SemanticRepresentationInformation ;
  rdfs:range xsd:string ;
  rdfs:comment "Which element of a format description a Semantic Representation Information is about, as its dotted path from the top of the file (e.g. packet.body.science.temp) -- the link between what a value means and where it sits in the bytes. LOCAL EXTENSION." .

im:UnitOfMeasurement
  a owl:Class ;
  rdfs:label "Unit of Measurement" ;
  oais:status "local-extension" ;
  rdfs:comment "Unit of Measurement: a unit in which the values of a data element are expressed, e.g. 'K' or 'erg/cm2/s/Angstrom', named by its rdfs:label and, where known, matched to a term in a units vocabulary with skos:exactMatch. LOCAL EXTENSION -- OAIS leaves the content of Semantic Representation Information to the Archive." .

im:hasUnitOfMeasurement
  a owl:ObjectProperty ;
  rdfs:label "has unit of measurement" ;
  oais:status "local-extension" ;
  rdfs:domain im:SemanticRepresentationInformation ;
  rdfs:range im:UnitOfMeasurement ;
  rdfs:comment "The unit in which a data element's physical values are expressed. LOCAL EXTENSION." .

im:scaleFactor
  a owl:DatatypeProperty ;
  rdfs:label "scale factor" ;
  oais:status "local-extension" ;
  rdfs:domain im:SemanticRepresentationInformation ;
  rdfs:range xsd:decimal ;
  rdfs:comment "Physical value = raw value * scale factor + add offset (CF convention scale_factor; FITS BSCALE). LOCAL EXTENSION." .

im:addOffset
  a owl:DatatypeProperty ;
  rdfs:label "add offset" ;
  oais:status "local-extension" ;
  rdfs:domain im:SemanticRepresentationInformation ;
  rdfs:range xsd:decimal ;
  rdfs:comment "See im:scaleFactor (CF convention add_offset; FITS BZERO). LOCAL EXTENSION." .

im:fillValue
  a owl:DatatypeProperty ;
  rdfs:label "fill value" ;
  oais:status "local-extension" ;
  rdfs:domain im:SemanticRepresentationInformation ;
  rdfs:comment "The raw value that means 'no data' for this element (CF convention _FillValue). LOCAL EXTENSION." .

im:validMin
  a owl:DatatypeProperty ;
  rdfs:label "smallest valid value" ;
  oais:status "local-extension" ;
  rdfs:domain im:SemanticRepresentationInformation ;
  rdfs:range xsd:decimal ;
  rdfs:comment "The smallest meaningful physical value of this element (CF convention valid_min). LOCAL EXTENSION." .

im:validMax
  a owl:DatatypeProperty ;
  rdfs:label "largest valid value" ;
  oais:status "local-extension" ;
  rdfs:domain im:SemanticRepresentationInformation ;
  rdfs:range xsd:decimal ;
  rdfs:comment "The largest meaningful physical value of this element (CF convention valid_max). LOCAL EXTENSION." .

im:hasCodeList
  a owl:ObjectProperty ;
  rdfs:label "has code list" ;
  oais:status "local-extension" ;
  rdfs:domain im:SemanticRepresentationInformation ;
  rdfs:range skos:ConceptScheme ;
  rdfs:comment "For a coded element: the skos:ConceptScheme of its codes, each a skos:Concept whose skos:notation is the raw value and skos:prefLabel its meaning. LOCAL EXTENSION." .

im:representsConcept
  a owl:ObjectProperty ;
  rdfs:label "represents concept" ;
  oais:status "local-extension" ;
  rdfs:subPropertyOf rdfs:seeAlso ;
  rdfs:domain im:SemanticRepresentationInformation ;
  rdfs:comment "The concept, in an external vocabulary or ontology, that this element's values represent. LOCAL EXTENSION." .

# ---- Transformations ----
#
# OAIS names three ways of preserving digital information: adding
# Representation Information, Transformation (a Digital Migration that changes
# the Content Information or PDI, checked against Transformation Information
# Properties, with Provenance Information added), and handing complete AIPs to
# another archive. The Information Model has classes for the second's result
# but not for the Transformation itself, so these record one: what it started
# from and made, how (the mapping it followed), when, and how each
# Transformational Information Property fared. The new Data Object goes in an
# AIP Version, whose Provenance Information records the Transformation.

im:Transformation
  a owl:Class ;
  rdfs:label "Transformation" ;
  oais:status "local-extension" ;
  rdfs:comment "Transformation: a Digital Migration in which the Content Information or Preservation Description Information of an Archival Information Package is changed, e.g. its Data Object rewritten in another format. Records the Data Object it started from (im:transformationSource), the one it made (im:transformationResult), the mapping it followed (im:followedMapping) or, if it was done outside the archive, who and what did it (im:performedBy) and how (rdfs:comment), when (im:performedAt), and its checks of Transformational Information Properties (im:hasPropertyCheck). LOCAL EXTENSION -- OAIS defines Transformation but the Information Model has no class for one." .

im:NonReversibleTransformation
  a owl:Class ;
  rdfs:label "Non-Reversible Transformation" ;
  oais:status "local-extension" ;
  rdfs:subClassOf im:Transformation ;
  rdfs:comment "Non-Reversible Transformation: a Transformation that can't be shown to be reversible, e.g. because some values weren't carried over, or were scaled or rounded. Checks of Transformational Information Properties are the evidence that what matters was kept. LOCAL EXTENSION." .

im:transformationSource
  a owl:ObjectProperty ;
  rdfs:label "transformation source" ;
  oais:status "local-extension" ;
  rdfs:domain im:Transformation ;
  rdfs:range im:DataObject ;
  rdfs:comment "The Data Object a Transformation started from, which it leaves unchanged. LOCAL EXTENSION." .

im:transformationResult
  a owl:ObjectProperty ;
  rdfs:label "transformation result" ;
  oais:status "local-extension" ;
  rdfs:domain im:Transformation ;
  rdfs:range im:DataObject ;
  rdfs:comment "The Data Object a Transformation made. LOCAL EXTENSION." .

im:performedAt
  a owl:DatatypeProperty ;
  rdfs:label "performed at" ;
  oais:status "local-extension" ;
  rdfs:domain im:Transformation ;
  rdfs:comment "When a Transformation was done: an xsd:dateTime, or an xsd:date when only the day is known (e.g. one done outside the archive). LOCAL EXTENSION." .

im:performedBy
  a owl:ObjectProperty ;
  rdfs:label "performed by" ;
  oais:status "local-extension" ;
  rdfs:domain im:Transformation ;
  rdfs:range im:Agent ;
  rdfs:comment "Who or what did a Transformation done outside the archive: the person, and the software application (an automated system), each an im:Agent. LOCAL EXTENSION." .

im:TransformationMapping
  a owl:Class ;
  rdfs:label "Transformation Mapping" ;
  oais:status "local-extension" ;
  rdfs:comment "Transformation Mapping: how a Transformation made each element of the new format from the old, one rule per line in im:specificationText (im:specificationLanguage 'OAIS Transformation Mapping'), e.g. 'star.ra = stars.entry.ra * 0.0174532925'. Kept so the Transformation can be understood and repeated. LOCAL EXTENSION." .

im:followedMapping
  a owl:ObjectProperty ;
  rdfs:label "followed mapping" ;
  oais:status "local-extension" ;
  rdfs:domain im:Transformation ;
  rdfs:range im:TransformationMapping ;
  rdfs:comment "The mapping a Transformation followed. LOCAL EXTENSION." .

im:TransformationalInformationPropertyCheck
  a owl:Class ;
  rdfs:label "Transformational Information Property Check" ;
  oais:status "local-extension" ;
  rdfs:comment "Transformational Information Property Check: whether one Transformational Information Property's values were preserved by a Transformation (im:checkOutcome: 'preserved', 'changed' or 'not checked'), found by decoding the new Data Object with its own Representation Information and comparing physical values, with the details in rdfs:comment. LOCAL EXTENSION -- OAIS says such checks may be part of Provenance Information." .

im:hasPropertyCheck
  a owl:ObjectProperty ;
  rdfs:label "has property check" ;
  oais:status "local-extension" ;
  rdfs:domain im:Transformation ;
  rdfs:range im:TransformationalInformationPropertyCheck ;
  rdfs:comment "A check of a Transformational Information Property made for a Transformation. LOCAL EXTENSION." .

im:checksProperty
  a owl:ObjectProperty ;
  rdfs:label "checks property" ;
  oais:status "local-extension" ;
  rdfs:domain im:TransformationalInformationPropertyCheck ;
  rdfs:range im:TransformationalInformationProperty ;
  rdfs:comment "The Transformational Information Property a check is of. LOCAL EXTENSION." .

im:checkOutcome
  a owl:DatatypeProperty ;
  rdfs:label "check outcome" ;
  oais:status "local-extension" ;
  rdfs:domain im:TransformationalInformationPropertyCheck ;
  rdfs:comment "Whether the property's values were 'preserved', 'changed', or 'not checked' (e.g. because the units differ). LOCAL EXTENSION." .

im:sourcePath
  a owl:DatatypeProperty ;
  rdfs:label "source path" ;
  oais:status "local-extension" ;
  rdfs:domain im:TransformationalInformationPropertyCheck ;
  rdfs:comment "Where the checked values are in the old format, as an im:structuralPath. LOCAL EXTENSION." .

im:targetPath
  a owl:DatatypeProperty ;
  rdfs:label "target path" ;
  oais:status "local-extension" ;
  rdfs:domain im:TransformationalInformationPropertyCheck ;
  rdfs:comment "Where the checked values went in the new format, as an im:structuralPath. LOCAL EXTENSION." .

im:AIPVersion
  a owl:Class ;
  rdfs:label "AIP Version" ;
  oais:status "local-extension" ;
  rdfs:subClassOf im:ArchivalInformationPackage ;
  rdfs:comment "AIP Version: an AIP whose Content Information or Preservation Description Information has undergone a Transformation on a source AIP (im:hasSourceAIP, where there is one), and is a candidate to replace it. LOCAL EXTENSION -- an OAIS term the Information Model has no class for." .

im:hasSourceAIP
  a owl:ObjectProperty ;
  rdfs:label "has source AIP" ;
  oais:status "local-extension" ;
  rdfs:domain im:AIPVersion ;
  rdfs:range im:ArchivalInformationPackage ;
  rdfs:comment "The AIP an AIP Version was made from by a Transformation. LOCAL EXTENSION." .

im:recordsTransformation
  a owl:ObjectProperty ;
  rdfs:label "records transformation" ;
  oais:status "local-extension" ;
  rdfs:domain im:ProvenanceInformation ;
  rdfs:range im:Transformation ;
  rdfs:comment "A Transformation that Provenance Information records. LOCAL EXTENSION." .

# ---- Designated Community, Preservation Objectives and Transformation ----
# ---- Information Properties, and the Agent who defines or identifies  ----
# ---- them (moved from oais_im_schema-sh-v5.ttl)                        ----

@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://ontology.oais.info/im/Agent>
  a owl:Class ;
  rdfs:label "Agent" ;
  oais:identifier "c-0029" ;
  oais:status "local-extension" ;
  oais:edition "CCSDS 650.0-M-3 (Issue 3, December 2024)" ;
  rdfs:comment "Agent: A person, organization, or automated system capable of performing an action such as defining a Designated Community or Preservation Objective, or identifying a Transformational Information Property. LOCAL EXTENSION -- the OAIS Information Model does not itself model who performs such actions; that belongs to the Producer/Management/Consumer roles of the Functional Model, out of scope for the Information-Model-only schema." .

<http://ontology.oais.info/im/DesignatedCommunity>
  a owl:Class ;
  rdfs:label "Designated Community" ;
  oais:identifier "c-0026" ;
  oais:status "local-extension" ;
  oais:edition "CCSDS 650.0-M-3 (Issue 3, December 2024)" ;
  oais:oaisConcept "Designated Community" ;
  oais:sourceReference "glossary" ;
  oais:sourceReference "section 2.4" ;
  rdfs:comment "Designated Community: An identified group of potential Consumers who should be able to understand a particular set of information in ways exemplified by the Preservation Objectives. The Designated Community may be composed of multiple user communities. A Designated Community is defined by the Archive and this definition may change over time. Not diagrammed as a class in the OAIS figures." .

<http://ontology.oais.info/im/PreservationObjective>
  a owl:Class ;
  rdfs:label "Preservation Objective" ;
  oais:identifier "c-0027" ;
  oais:status "local-extension" ;
  oais:edition "CCSDS 650.0-M-3 (Issue 3, December 2024)" ;
  oais:oaisConcept "Preservation Objective" ;
  oais:sourceReference "section 2.4" ;
  rdfs:comment "Preservation Objective: A specific achievable aim which can be carried out using the Information Object. Per section 2.4, an OAIS must define its Preservation Objectives, which should be Specific, Actionable, and Measurable, and which exemplify what it means for information to be Independently Understandable by the Designated Community." .

<http://ontology.oais.info/im/TransformationalInformationProperty>
  a owl:Class ;
  rdfs:label "Transformational Information Property" ;
  skos:altLabel "Transformational Information Property" ;
  oais:identifier "c-0028" ;
  oais:status "local-extension" ;
  oais:edition "CCSDS 650.0-M-3 (Issue 3, December 2024)" ;
  oais:oaisConcept "Transformational Information Property" ;
  oais:sourceReference "glossary" ;
  oais:sourceReference "section 2.5" ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty <http://ontology.oais.info/im/dependsOnRepresentationInformation> ;
    owl:minCardinality "1"^^xsd:nonNegativeInteger
  ] ;
  rdfs:comment "Transformational Information Property: An Information Property the preservation of the value of which is regarded as being necessary but not sufficient to verify that any Non-Reversible Transformation has adequately preserved information content. This could be important as contributing to evidence about Authenticity. Such an Information Property is dependent upon specific Representation Information, including Semantic Representation Information, to denote how it is encoded and what it means. NOTE -- sometimes referred to in the literature as a 'significant property'. Per section 2.5, checks of the values of Transformational Information Properties may be part of Provenance Information; not asserted here as a formal relation since OAIS states it as a possibility, not a requirement." .

<http://ontology.oais.info/im/carriedOutUsing>
  a owl:ObjectProperty ;
  rdfs:label "carried out using" ;
  oais:identifier "s-0036" ;
  oais:status "local-extension" ;
  oais:slotRole "mapped" ;
  rdfs:domain <http://ontology.oais.info/im/PreservationObjective> ;
  rdfs:range <http://ontology.oais.info/im/InformationObject> ;
  rdfs:comment "sources:section 2.4 ('A specific achievable aim which can be carried out using the Information Object')." .

<http://ontology.oais.info/im/definesPreservationObjective>
  a owl:ObjectProperty ;
  rdfs:label "defines Preservation Objective" ;
  oais:identifier "s-0037" ;
  oais:status "local-extension" ;
  oais:slotRole "mapped" ;
  rdfs:domain <http://ontology.oais.info/im/Agent> ;
  rdfs:range <http://ontology.oais.info/im/PreservationObjective> ;
  rdfs:comment "sources:section 2.4 ('An OAIS must define Preservation Objectives'). Domain is Agent, not OAIS: it is a person, organization, or automated system acting on the Archive's behalf that performs the defining, not the Archive-as-system itself." .

<http://ontology.oais.info/im/dependsOnRepresentationInformation>
  a owl:ObjectProperty ;
  rdfs:label "depends on Representation Information" ;
  oais:identifier "s-0038" ;
  oais:status "local-extension" ;
  oais:slotRole "mapped" ;
  rdfs:domain <http://ontology.oais.info/im/TransformationalInformationProperty> ;
  rdfs:range <http://ontology.oais.info/im/RepresentationInformation> ;
  rdfs:comment "sources:glossary ('Such an Information Property is dependent upon specific Representation Information, including Semantic Representation Information, to denote how it is encoded and what it means')." .

<http://ontology.oais.info/im/hasDesignatedCommunity>
  a owl:ObjectProperty ;
  rdfs:label "has Designated Community" ;
  oais:identifier "s-0042" ;
  oais:status "local-extension" ;
  oais:slotRole "mapped" ;
  rdfs:domain <http://ontology.oais.info/im/InformationObject> ;
  rdfs:range <http://ontology.oais.info/im/DesignatedCommunity> ;
  rdfs:comment "sources:glossary. Relates a specific Information Object -- including an Information Package, since InformationPackage is a subclass of InformationObject, so this also covers a collection such as an AIP or DIP -- to the Designated Community(ies) for which it must be Independently Understandable. Distinct from definesDesignatedCommunity, which is the Archive's own archive-wide definition; an object may be relevant to several Designated Communities, so no cardinality restriction is asserted." .

<http://ontology.oais.info/im/definesDesignatedCommunity>
  a owl:ObjectProperty ;
  rdfs:label "defines Designated Community" ;
  oais:identifier "s-0039" ;
  oais:status "local-extension" ;
  oais:slotRole "mapped" ;
  rdfs:domain <http://ontology.oais.info/im/Agent> ;
  rdfs:range <http://ontology.oais.info/im/DesignatedCommunity> ;
  rdfs:comment "sources:glossary ('A Designated Community is defined by the Archive and this definition may change over time'). Domain is Agent, not OAIS: it is a person, organization, or automated system acting on the Archive's behalf that performs the defining, not the Archive-as-system itself." .

<http://ontology.oais.info/im/hasPreservationObjective>
  a owl:ObjectProperty ;
  rdfs:label "has Preservation Objective" ;
  oais:identifier "s-0040" ;
  oais:status "local-extension" ;
  oais:slotRole "mapped" ;
  rdfs:domain <http://ontology.oais.info/im/DesignatedCommunity> ;
  rdfs:range <http://ontology.oais.info/im/PreservationObjective> ;
  rdfs:comment "sources:glossary ('...should be able to understand a particular set of information in ways exemplified by the Preservation Objectives')." .

<http://ontology.oais.info/im/hasTransformationalInformationProperty>
  a owl:ObjectProperty ;
  rdfs:label "has Transformational Information Property" ;
  oais:identifier "s-0043" ;
  oais:status "local-extension" ;
  oais:slotRole "mapped" ;
  rdfs:domain <http://ontology.oais.info/im/InformationObject> ;
  rdfs:range <http://ontology.oais.info/im/TransformationalInformationProperty> ;
  rdfs:comment "sources:glossary; section 2.5. Relates a specific Information Object -- including an Information Package, since InformationPackage is a subclass of InformationObject, so this also covers a collection such as an AIP or DIP -- to the Transformational Information Property value(s) that must be checked to evidence adequate preservation of its content across a Non-Reversible Transformation. Distinct from identifiesTransformationalInformationProperty, which is the Archive's own archive-wide designation; no cardinality restriction is asserted, since an object may have several." .

<http://ontology.oais.info/im/identifiesTransformationalInformationProperty>
  a owl:ObjectProperty ;
  rdfs:label "identifies Transformational Information Property" ;
  oais:identifier "s-0041" ;
  oais:status "local-extension" ;
  oais:slotRole "mapped" ;
  rdfs:domain <http://ontology.oais.info/im/Agent> ;
  rdfs:range <http://ontology.oais.info/im/TransformationalInformationProperty> ;
  rdfs:comment "sources:section 2.5 ('the following should also be preserved: Definition of the Designated Communities; Preservation Objectives; Transformational Information Properties'). Domain is Agent, not OAIS: it is a person, organization, or automated system acting on the Archive's behalf that performs the identifying, not the Archive-as-system itself." .

# ---- Collection inheritance of PDI and Representation Information ----
#
# OAIS v3 models Archival Information Collections, AICs within AICs, and
# Access Collections, but not what their members inherit. ISAD(G)'s rule of
# non-repetition supplies it: information is given at the highest level it
# applies to, and not repeated below. A member inherits a category of
# information from the collections it is (or was) in, as each category's
# rule says. Membership is given by the hierarchy already there
# (rico:isOrWasConstituentOf and the like, a Data Object through its record);
# an im:Membership adds when the member joined and left, the kind of
# collection, and which categories it carries. Categories are named by their
# classes: im:ProvenanceInformation, im:ContextInformation,
# im:AccessRightsInformation, im:ReferenceInformation, im:FixityInformation,
# im:RepresentationInformation.

@prefix prov: <http://www.w3.org/ns/prov#> .

im:Membership
  a owl:Class ;
  rdfs:label "Membership" ;
  oais:status "local-extension" ;
  rdfs:comment "Membership: an Information Object's being a member of a collection, from when to when, and what it inherits from it. Joining and leaving are recorded, never deleted. LOCAL EXTENSION -- OAIS defines collections but not inheritance; see Collection Inheritance Across PDI Layers." .

im:member a owl:ObjectProperty ; rdfs:label "member" ; oais:status "local-extension" ;
  rdfs:domain im:Membership ; rdfs:comment "Membership -> the member. LOCAL EXTENSION." .
im:memberOf a owl:ObjectProperty ; rdfs:label "member of" ; oais:status "local-extension" ;
  rdfs:domain im:Membership ; rdfs:comment "Membership -> the collection. LOCAL EXTENSION." .
im:membershipKind a owl:ObjectProperty ; rdfs:label "membership kind" ; oais:status "local-extension" ;
  rdfs:domain im:Membership ; rdfs:range im:MembershipKind ; rdfs:comment "Membership -> the kind of collection: an Archival Information Collection, an Access Collection or a container. LOCAL EXTENSION." .
im:MembershipKind a owl:Class ; rdfs:label "Membership kind" ; oais:status "local-extension" .
im:AicMembership a im:MembershipKind ; rdfs:label "Archival Information Collection" ;
  rdfs:comment "Carries every category that inherits." .
im:AccessMembership a im:MembershipKind ; rdfs:label "Access Collection" ;
  rdfs:comment "Carries only the categories the collection declares (im:carriesCategory); none if it declares none." .
im:ContainerMembership a im:MembershipKind ; rdfs:label "Container" ;
  rdfs:comment "A component inside a container Data Object (a file in a ZIP, an attachment in a PDF)." .
im:joinedOn a owl:DatatypeProperty ; rdfs:label "joined on" ; oais:status "local-extension" ;
  rdfs:domain im:Membership ; rdfs:range xsd:date .
im:leftOn a owl:DatatypeProperty ; rdfs:label "left on" ; oais:status "local-extension" ;
  rdfs:domain im:Membership ; rdfs:range xsd:date .
im:carriesCategory a owl:ObjectProperty ; rdfs:label "carries category" ; oais:status "local-extension" ;
  rdfs:comment "Access Collection or Membership -> a category of information (named by its class) its members inherit. LOCAL EXTENSION." .
im:AccessCollection a owl:Class ; rdfs:label "Access Collection" ; oais:status "local-extension" ;
  rdfs:comment "A collection defined by a Collection Description only, a view rather than a container: its members inherit only the categories it declares. LOCAL EXTENSION -- named in OAIS 1.6.2." .

im:InheritanceBlock
  a owl:Class ;
  rdfs:label "Inheritance block" ;
  oais:status "local-extension" ;
  rdfs:comment "Inheritance block: a member's explicit refusal to inherit one category from one collection, with why and who said so -- e.g. an item from another donor, not sharing the collection's custody history. LOCAL EXTENSION." .
im:blockedMember a owl:ObjectProperty ; rdfs:label "blocked member" ; oais:status "local-extension" ; rdfs:domain im:InheritanceBlock .
im:blockedFrom a owl:ObjectProperty ; rdfs:label "blocked from" ; oais:status "local-extension" ; rdfs:domain im:InheritanceBlock .
im:blockedCategory a owl:ObjectProperty ; rdfs:label "blocked category" ; oais:status "local-extension" ; rdfs:domain im:InheritanceBlock .

im:statement a owl:DatatypeProperty ; rdfs:label "statement" ; oais:status "local-extension" ;
  rdfs:comment "A policy's, a Knowledge Base profile's or a Representation Information node's statement, as text: authoritative, whatever structured fields say. LOCAL EXTENSION." .
im:createdBy a owl:DatatypeProperty ; rdfs:label "created by" ; oais:status "local-extension" .
im:createdOn a owl:DatatypeProperty ; rdfs:label "created on" ; oais:status "local-extension" ; rdfs:range xsd:dateTime .

# ---- Fixity Information: digests, policies, checks ----
#
# OAIS v3 Fixity Information is the mechanisms that ensure the Content Data
# Object has not been altered in an undocumented manner -- the digests and
# the rules around them -- for the Data Object of any Information Object.
# Digests belong to specific bits and never inherit; a fixity policy does,
# the nearest one up the collections, ending at the archive's own.

im:Digest
  a owl:Class ;
  rdfs:label "Digest" ;
  oais:status "local-extension" ;
  rdfs:subClassOf im:FixityInformation ;
  rdfs:comment "Digest: a value computed from a Data Object's bits by an algorithm (a CRC, checksum or message digest), with who stated it and when. A failed check never changes it. LOCAL EXTENSION -- PREMIS fixity, spdx:Checksum." .
im:digestOf a owl:ObjectProperty ; rdfs:label "digest of" ; oais:status "local-extension" ;
  rdfs:domain im:Digest ; rdfs:comment "Digest -> the Data Object whose bits it was computed from. LOCAL EXTENSION." .
im:digestAlgorithm a owl:DatatypeProperty ; rdfs:label "algorithm" ; oais:status "local-extension" ;
  rdfs:domain im:Digest ; rdfs:comment "The algorithm's canonical identifier in the archive's algorithm registry (sha-256, md5, crc32, ...). LOCAL EXTENSION." .
im:digestValue a owl:DatatypeProperty ; rdfs:label "value" ; oais:status "local-extension" ;
  rdfs:domain im:Digest ; rdfs:comment "The digest, in lower-case hex: values in any notation (base64, URN, multihash) are compared as bytes. LOCAL EXTENSION." .
im:digestOriginator a owl:DatatypeProperty ; rdfs:label "originator" ; oais:status "local-extension" ;
  rdfs:comment "Who stated the digest: the archive, or the Producer or package it came with. LOCAL EXTENSION -- PREMIS messageDigestOriginator." .
im:recordedOn a owl:DatatypeProperty ; rdfs:label "recorded on" ; oais:status "local-extension" ; rdfs:range xsd:dateTime .

im:FixityPolicy
  a owl:Class ;
  rdfs:label "Fixity policy" ;
  oais:status "local-extension" ;
  rdfs:subClassOf im:FixityInformation ;
  rdfs:comment "Fixity policy: the rules of the fixity mechanism -- how often digests are checked, which algorithms are required, what happens when a change is found. Its statement (im:statement) is required and authoritative; the structured fields let the archive act on it. A policy with a statement only is valid, and listed for a person to act on. On a record, a group, or the archive (im:appliesToArchive); the most specific applies. LOCAL EXTENSION." .
im:hasFixityPolicy a owl:ObjectProperty ; rdfs:label "has fixity policy" ; oais:status "local-extension" ;
  rdfs:range im:FixityPolicy ; rdfs:comment "Record, group or Data Object -> the fixity policy set on it, for it and everything in it. LOCAL EXTENSION." .
im:appliesToArchive a owl:DatatypeProperty ; rdfs:label "applies to the archive" ; oais:status "local-extension" ;
  rdfs:range xsd:boolean ; rdfs:comment "The policy for everything the archive holds, unless something nearer says otherwise. LOCAL EXTENSION." .
im:checkInterval a owl:DatatypeProperty ; rdfs:label "check every" ; oais:status "local-extension" ;
  rdfs:range xsd:duration ; rdfs:comment "An ISO 8601 duration, e.g. P1Y. LOCAL EXTENSION." .
im:requiredAlgorithm a owl:DatatypeProperty ; rdfs:label "required algorithm" ; oais:status "local-extension" .
im:onChangeDetected a owl:ObjectProperty ; rdfs:label "when a change is found" ; oais:status "local-extension" ;
  rdfs:range im:ChangeResponse .
im:ChangeResponse a owl:Class ; rdfs:label "Response to a detected change" ; oais:status "local-extension" .
im:NotifyOnChange a im:ChangeResponse ; rdfs:label "Report it to the editors" .
im:WithholdOnChange a im:ChangeResponse ; rdfs:label "Withhold the content from visitors until an editor resolves it" .
im:FollowProcedureOnChange a im:ChangeResponse ; rdfs:label "Follow the procedure in the statement" ;
  rdfs:comment "Raised to a person, who follows the statement." .

im:FixityCheck
  a owl:Class ;
  rdfs:label "Fixity check" ;
  oais:status "local-extension" ;
  rdfs:subClassOf prov:Activity ;
  rdfs:comment "Fixity check: one verification of a Data Object's bits against a digest -- the value computed, the outcome, who or what checked, with what, when, and under which policy. Part of the Data Object's provenance. LOCAL EXTENSION -- PREMIS fixity check event." .
im:DigestCalculation
  a owl:Class ;
  rdfs:label "Digest calculation" ;
  oais:status "local-extension" ;
  rdfs:subClassOf prov:Activity ;
  rdfs:comment "Digest calculation: the first computation of a digest of a Data Object, at Ingest, after a Transformation, or when the archive finds one missing. LOCAL EXTENSION -- PREMIS message digest calculation event." .
im:checkedObject a owl:ObjectProperty ; rdfs:label "checked object" ; oais:status "local-extension" .
im:checkedDigest a owl:ObjectProperty ; rdfs:label "checked digest" ; oais:status "local-extension" ; rdfs:range im:Digest .
im:computedValue a owl:DatatypeProperty ; rdfs:label "computed value" ; oais:status "local-extension" .
im:calculated a owl:ObjectProperty ; rdfs:label "calculated" ; oais:status "local-extension" ; rdfs:range im:Digest .
im:fixityOutcome a owl:ObjectProperty ; rdfs:label "outcome" ; oais:status "local-extension" ; rdfs:range im:FixityOutcome .
im:FixityOutcome a owl:Class ; rdfs:label "Fixity outcome" ; oais:status "local-extension" .
im:FixityPass a im:FixityOutcome ; rdfs:label "Pass" .
im:FixityFail a im:FixityOutcome ; rdfs:label "Fail" .
im:FixityUnverifiable a im:FixityOutcome ; rdfs:label "Unverifiable" ;
  rdfs:comment "The algorithm isn't supported, or the bits couldn't be fetched for a reason other than their absence." .
im:FixityMissingTarget a im:FixityOutcome ; rdfs:label "Missing" ; rdfs:comment "The bits aren't where the Data Object says." .
im:checkedBy a owl:DatatypeProperty ; rdfs:label "checked by" ; oais:status "local-extension" .
im:checkTool a owl:DatatypeProperty ; rdfs:label "tool" ; oais:status "local-extension" .
im:underPolicy a owl:ObjectProperty ; rdfs:label "under policy" ; oais:status "local-extension" ; rdfs:range im:FixityPolicy .
im:resolvedOn a owl:DatatypeProperty ; rdfs:label "resolved on" ; oais:status "local-extension" ; rdfs:range xsd:dateTime .
im:resolvedBy a owl:DatatypeProperty ; rdfs:label "resolved by" ; oais:status "local-extension" .
im:resolution a owl:DatatypeProperty ; rdfs:label "resolution" ; oais:status "local-extension" .
im:policyChange a owl:DatatypeProperty ; rdfs:label "policy change" ; oais:status "local-extension" ;
  rdfs:domain im:FixityPolicy ; rdfs:comment "One change to a policy: when, who, and what it said then. Changes are added, never removed. LOCAL EXTENSION." .

# ---- The Representation Information layer: networks, Knowledge Bases, gaps ----
#
# OAIS v3: Representation Information is recursive, and the network ends at
# the Knowledge Base of the Designated Community. These terms record each
# node of a network (Structure, Semantic or Other, held by the archive or
# referenced elsewhere), ordered groups (applied in sequence, each to the
# output of the one before: unpack, decode, interpret), dispatch steps
# (which Representation Information applies to which component of a
# container), the components themselves, a Designated Community's Knowledge
# Base profile (versioned), and gap analysis against it. Software is Other
# Representation Information and is never the only route. Components inherit
# provenance, context, rights and the fixity policy from their container
# (im:ContainerMembership); their digests are their own.

im:ordered a owl:DatatypeProperty ; rdfs:label "ordered" ; oais:status "local-extension" ;
  rdfs:domain im:RepInfoGroup ; rdfs:range xsd:boolean ;
  rdfs:comment "An ordered group applies its members in sequence, each to the output of the one before (unpack, decode, interpret). Their positions are given by rdf:_1, rdf:_2, ... beside im:hasGroupMember. A group without it is unordered, as before. LOCAL EXTENSION." .
im:unpacks a owl:DatatypeProperty ; rdfs:label "unpacks" ; oais:status "local-extension" ;
  rdfs:domain im:RepresentationInformation ; rdfs:range xsd:boolean ;
  rdfs:comment "Applying this Representation Information yields components (a ZIP or OPC package, a PDF with attachments): in an ordered group, what follows it applies to the components. Packaging formats (ZIP, tar, gzip, 7-Zip) unpack without saying so. LOCAL EXTENSION." .
im:forFormat a owl:ObjectProperty ; rdfs:label "for format" ; oais:status "local-extension" ;
  rdfs:domain im:RepresentationInformation ; rdfs:range im:FormatProfile ;
  rdfs:comment "The format a Structure or Other Representation Information is tied to. Stated on a collection, it reaches only members whose latest format identification matches that format (registry identifier, version, profile). LOCAL EXTENSION." .
im:hasContainerProfile a owl:ObjectProperty ; rdfs:label "has container profile" ; oais:status "local-extension" ;
  rdfs:domain im:FormatProfile ; rdfs:range im:RepInfoGroup ;
  rdfs:comment "The ordered AND group that explains a structured format built on a container (OOXML, OpenDocument, EPUB, PDF/A-3), e.g. [ZIP/OPC, OOXML, a dispatch of word/media/* by identified format]. Files of the format get it through their format identification, with no group of their own. LOCAL EXTENSION." .
im:specificationIdentifier a owl:DatatypeProperty ; rdfs:label "specification identifier" ; oais:status "local-extension" ;
  rdfs:domain im:RepresentationInformation ;
  rdfs:comment "How the specification a node stands for is identified -- a standard's number, a citation, a URL -- so a copy can be found, e.g. 'ISO 19005-3:2012'. LOCAL EXTENSION." .
im:copyHeld a owl:DatatypeProperty ; rdfs:label "copy held" ; oais:status "local-extension" ;
  rdfs:domain im:RepresentationInformation ; rdfs:range xsd:boolean ;
  rdfs:comment "The archive holds a copy of the specification, though not as text or a Data Object of its own. LOCAL EXTENSION." .
im:externalReference a owl:ObjectProperty ; rdfs:label "external reference" ; oais:status "local-extension" ;
  rdfs:domain im:RepresentationInformation ;
  rdfs:comment "Where Representation Information the archive does not hold is kept, in another trusted OAIS or a registry. LOCAL EXTENSION." .
im:referenceAgreement a owl:DatatypeProperty ; rdfs:label "reference agreement" ; oais:status "local-extension" ;
  rdfs:comment "The agreement under which the archive relies on an external reference. LOCAL EXTENSION." .
im:referenceCheckedOn a owl:DatatypeProperty ; rdfs:label "reference checked on" ; oais:status "local-extension" ;
  rdfs:range xsd:dateTime ; rdfs:comment "When an external reference was last checked. LOCAL EXTENSION." .
im:referenceResolves a owl:DatatypeProperty ; rdfs:label "reference resolves" ; oais:status "local-extension" ;
  rdfs:range xsd:boolean ; rdfs:comment "Whether an external reference resolved when last checked. LOCAL EXTENSION." .
im:supportsObjective a owl:ObjectProperty ; rdfs:label "supports objective" ; oais:status "local-extension" ;
  rdfs:domain im:RepresentationInformation ; rdfs:range im:PreservationObjective ;
  rdfs:comment "A Preservation Objective this part of a network supports, so the network can be tested against it. LOCAL EXTENSION." .
im:objectiveTest a owl:DatatypeProperty ; rdfs:label "objective test" ; oais:status "local-extension" ;
  rdfs:domain im:PreservationObjective ; rdfs:comment "How a Preservation Objective is tested. LOCAL EXTENSION." .

im:Software
  a owl:Class ;
  rdfs:label "Software" ;
  oais:status "local-extension" ;
  rdfs:subClassOf im:OtherRepresentationInformation ;
  rdfs:comment "Software: Other Representation Information that is a program able to render or process the data. Never the only route: a network with only software, and no Structure or Semantic Representation Information, is a gap, and an OR group whose only alternatives are software is reported. LOCAL EXTENSION." .

im:SemanticTerm
  a owl:Class ;
  rdfs:label "Semantic term" ;
  oais:status "local-extension" ;
  rdfs:subClassOf im:SemanticRepresentationInformation ;
  rdfs:comment "Semantic term: one term of Semantic Representation Information -- its name (rdfs:label), definition (skos:definition), unit, datatype and source vocabulary. Terms stated on collections and members are combined as a union; a member's term with the same name and a different definition or unit is flagged for review, never silently overridden. LOCAL EXTENSION." .
im:unit a owl:DatatypeProperty ; rdfs:label "unit" ; oais:status "local-extension" ;
  rdfs:domain im:SemanticTerm ; rdfs:comment "A term's unit, e.g. 'K' or 'deg'. LOCAL EXTENSION." .
im:termDatatype a owl:DatatypeProperty ; rdfs:label "datatype" ; oais:status "local-extension" ;
  rdfs:domain im:SemanticTerm ; rdfs:comment "A term's datatype, e.g. 'xsd:double'. LOCAL EXTENSION." .
im:sourceVocabulary a owl:DatatypeProperty ; rdfs:label "source vocabulary" ; oais:status "local-extension" ;
  rdfs:domain im:SemanticTerm ; rdfs:comment "The vocabulary a term comes from, e.g. 'FITS Standard 4.0'. LOCAL EXTENSION." .

im:DispatchStep
  a owl:Class ;
  rdfs:label "Dispatch step" ;
  oais:status "local-extension" ;
  rdfs:subClassOf im:RepresentationInformation ;
  rdfs:comment "Dispatch step: a member of a group saying which Representation Information applies to which component of a container, through its branches (im:hasBranch). For each component the most specific branch that selects it applies: one locator, then a path pattern, an identified format, a media type, and all. A component no branch selects is a gap. LOCAL EXTENSION." .
im:DispatchBranch
  a owl:Class ;
  rdfs:label "Dispatch branch" ;
  oais:status "local-extension" ;
  rdfs:comment "Dispatch branch: a selector (im:selectorKind, im:selectorValue) and the Representation Information applied to the components it selects (im:appliesRepInfo), or, with im:byIdentifiedFormat, each component's own identified format. A proposed branch (im:proposed) waits for a person to confirm it. LOCAL EXTENSION." .
im:hasBranch a owl:ObjectProperty ; rdfs:label "has branch" ; oais:status "local-extension" ;
  rdfs:domain im:DispatchStep ; rdfs:range im:DispatchBranch .
im:selectorKind a owl:DatatypeProperty ; rdfs:label "selector kind" ; oais:status "local-extension" ;
  rdfs:domain im:DispatchBranch ; rdfs:comment "'locator', 'path', 'format', 'mediaType' or 'all', most specific first. LOCAL EXTENSION." .
im:selectorValue a owl:DatatypeProperty ; rdfs:label "selector value" ; oais:status "local-extension" ;
  rdfs:domain im:DispatchBranch ; rdfs:comment "A locator, a path pattern ('word/media/*'), a format (a Format Profile, registry identifier or media type) or a media type ('image/*'). LOCAL EXTENSION." .
im:appliesRepInfo a owl:ObjectProperty ; rdfs:label "applies" ; oais:status "local-extension" ;
  rdfs:domain im:DispatchBranch ; rdfs:range im:RepresentationInformation .
im:byIdentifiedFormat a owl:DatatypeProperty ; rdfs:label "by identified format" ; oais:status "local-extension" ;
  rdfs:domain im:DispatchBranch ; rdfs:range xsd:boolean ;
  rdfs:comment "The branch applies each selected component's own identified format. LOCAL EXTENSION." .
im:branchPosition a owl:DatatypeProperty ; rdfs:label "position" ; oais:status "local-extension" ;
  rdfs:domain im:DispatchBranch ; rdfs:range xsd:integer .
im:proposed a owl:DatatypeProperty ; rdfs:label "proposed" ; oais:status "local-extension" ;
  rdfs:range xsd:boolean ; rdfs:comment "Proposed by a container scan, for a person to confirm. LOCAL EXTENSION." .
im:hasProposedDispatch a owl:ObjectProperty ; rdfs:label "has proposed dispatch" ; oais:status "local-extension" ;
  rdfs:range im:DispatchStep ; rdfs:comment "Data Object -> the dispatch step a container scan proposes for it. LOCAL EXTENSION." .

im:Component
  a owl:Class ;
  rdfs:label "Component" ;
  oais:status "local-extension" ;
  rdfs:comment "Component: an item inside a container Data Object -- a ZIP or tar entry, an OPC part, a compound-file stream, a PDF embedded file or font -- addressed by its locator (im:locator), chained for nested containers ('outer.zip!/inner.tar!/scan.tif'). Embedded components need Representation Information of their own, through a dispatch branch; intrinsic ones are explained by the container format's. Part of the container's description: it goes when the container does. LOCAL EXTENSION." .
im:hasComponent a owl:ObjectProperty ; rdfs:label "has component" ; oais:status "local-extension" ;
  rdfs:range im:Component ; rdfs:comment "Container Data Object or component -> a component inside it. LOCAL EXTENSION." .
im:locator a owl:DatatypeProperty ; rdfs:label "locator" ; oais:status "local-extension" ;
  rdfs:domain im:Component ; rdfs:comment "Where a component is, from the outermost container: 'outer.zip!/inner.tar!/scan.tif'. LOCAL EXTENSION." .
im:componentPath a owl:DatatypeProperty ; rdfs:label "path" ; oais:status "local-extension" ;
  rdfs:domain im:Component ; rdfs:comment "Where a component is inside the container directly holding it. LOCAL EXTENSION." .
im:componentRole a owl:DatatypeProperty ; rdfs:label "role" ; oais:status "local-extension" ;
  rdfs:domain im:Component ; rdfs:comment "'embedded' (needs its own Representation Information) or 'intrinsic' (explained by the container format's). LOCAL EXTENSION." .
im:componentSize a owl:DatatypeProperty ; rdfs:label "size" ; oais:status "local-extension" ;
  rdfs:domain im:Component ; rdfs:range xsd:long .
im:hasDigest a owl:ObjectProperty ; rdfs:label "has digest" ; oais:status "local-extension" ;
  rdfs:range im:Digest ; rdfs:comment "Component -> its own digest, computed when scanned. LOCAL EXTENSION." .
im:extractedCopy a owl:ObjectProperty ; rdfs:label "extracted copy" ; oais:status "local-extension" ;
  rdfs:domain im:Component ; rdfs:comment "Where an extracted copy of a component is stored, if one is. LOCAL EXTENSION." .
im:identificationConfidence a owl:DatatypeProperty ; rdfs:label "identification confidence" ; oais:status "local-extension" ;
  rdfs:domain im:FormatIdentification ; rdfs:range xsd:decimal ;
  rdfs:comment "How far a Format Identification can be trusted, from 0 to 1; without it, judged from its basis (an extension match alone is weak). Below the archive's threshold it blocks inheriting Structure Representation Information. LOCAL EXTENSION." .

im:KnowledgeBaseProfile
  a owl:Class ;
  rdfs:label "Knowledge Base profile" ;
  oais:status "local-extension" ;
  rdfs:comment "Knowledge Base profile: what a Designated Community is taken to understand -- the Representation Information and formats it covers (im:covers, im:coversFormat) and a description (im:statement). Versioned (im:profileVersion): each change is a PROV activity (im:KnowledgeBaseChange), and every gap analysis names the version it used. LOCAL EXTENSION -- OAIS defines the Knowledge Base, but not a record of one." .
im:hasKnowledgeBase a owl:ObjectProperty ; rdfs:label "has Knowledge Base" ; oais:status "local-extension" ;
  rdfs:domain im:DesignatedCommunity ; rdfs:range im:KnowledgeBaseProfile .
im:covers a owl:ObjectProperty ; rdfs:label "covers" ; oais:status "local-extension" ;
  rdfs:domain im:KnowledgeBaseProfile ; rdfs:range im:RepresentationInformation ;
  rdfs:comment "Representation Information the community understands: a network ends there. LOCAL EXTENSION." .
im:coversFormat a owl:DatatypeProperty ; rdfs:label "covers format" ; oais:status "local-extension" ;
  rdfs:domain im:KnowledgeBaseProfile ;
  rdfs:comment "A format the community understands, by registry identifier ('PRONOM fmt/353') or media type ('application/fits'). LOCAL EXTENSION." .
im:profileVersion a owl:DatatypeProperty ; rdfs:label "version" ; oais:status "local-extension" ;
  rdfs:domain im:KnowledgeBaseProfile ; rdfs:range xsd:integer .
im:profileChange a owl:DatatypeProperty ; rdfs:label "change" ; oais:status "local-extension" ;
  rdfs:domain im:KnowledgeBaseProfile ; rdfs:comment "One change to a profile, in words: added, never removed. LOCAL EXTENSION." .
im:seedRevision a owl:DatatypeProperty ; rdfs:label "seed revision" ; oais:status "local-extension" ;
  rdfs:range xsd:integer ; rdfs:comment "The revision of a seed file last loaded: a higher one in the file is loaded again at the next start. LOCAL EXTENSION." .

im:KnowledgeBaseChange
  a owl:Class ;
  rdfs:label "Knowledge Base change" ;
  oais:status "local-extension" ;
  rdfs:subClassOf prov:Activity ;
  rdfs:comment "Knowledge Base change: one change to a Knowledge Base profile -- what was added and removed, by whom, when, and the version it made. LOCAL EXTENSION." .
im:changedProfile a owl:ObjectProperty ; rdfs:label "changed profile" ; oais:status "local-extension" ;
  rdfs:domain im:KnowledgeBaseChange ; rdfs:range im:KnowledgeBaseProfile .
im:resultingVersion a owl:DatatypeProperty ; rdfs:label "resulting version" ; oais:status "local-extension" ;
  rdfs:range xsd:integer .
im:added a owl:ObjectProperty ; rdfs:label "added" ; oais:status "local-extension" .
im:removed a owl:ObjectProperty ; rdfs:label "removed" ; oais:status "local-extension" .
im:changedBy a owl:DatatypeProperty ; rdfs:label "changed by" ; oais:status "local-extension" .

im:RepInfoChange
  a owl:Class ;
  rdfs:label "Representation Information change" ;
  oais:status "local-extension" ;
  rdfs:subClassOf prov:Activity ;
  rdfs:comment "Representation Information change: one change to a node, group, dispatch step or branch of a network -- what, by whom and when. Part of the Representation Information's own provenance. LOCAL EXTENSION." .
im:changedRepInfo a owl:ObjectProperty ; rdfs:label "changed" ; oais:status "local-extension" ;
  rdfs:domain im:RepInfoChange .

im:GapAnalysis
  a owl:Class ;
  rdfs:label "Gap analysis" ;
  oais:status "local-extension" ;
  rdfs:subClassOf prov:Activity ;
  rdfs:comment "Gap analysis: whether a Data Object's Representation Information network reaches a Designated Community's Knowledge Base -- the profile and the version used, why it was run, how deep the network went, whether it is understandable, its gaps (im:hasGap) and the nodes where the network ended (im:reachedNode). Repeated when the Knowledge Base or the object's format changes. Part of the Data Object's description. LOCAL EXTENSION." .
im:hasGapAnalysis a owl:ObjectProperty ; rdfs:label "has gap analysis" ; oais:status "local-extension" ;
  rdfs:range im:GapAnalysis .
im:forCommunity a owl:ObjectProperty ; rdfs:label "for community" ; oais:status "local-extension" ;
  rdfs:domain im:GapAnalysis ; rdfs:range im:DesignatedCommunity .
im:usedKnowledgeBase a owl:ObjectProperty ; rdfs:label "used Knowledge Base" ; oais:status "local-extension" ;
  rdfs:domain im:GapAnalysis ; rdfs:range im:KnowledgeBaseProfile .
im:knowledgeBaseVersion a owl:DatatypeProperty ; rdfs:label "Knowledge Base version" ; oais:status "local-extension" ;
  rdfs:domain im:GapAnalysis ; rdfs:range xsd:integer .
im:understandable a owl:DatatypeProperty ; rdfs:label "understandable" ; oais:status "local-extension" ;
  rdfs:domain im:GapAnalysis ; rdfs:range xsd:boolean .
im:networkDepth a owl:DatatypeProperty ; rdfs:label "network depth" ; oais:status "local-extension" ;
  rdfs:domain im:GapAnalysis ; rdfs:range xsd:integer .
im:analysisTrigger a owl:DatatypeProperty ; rdfs:label "trigger" ; oais:status "local-extension" ;
  rdfs:domain im:GapAnalysis .
im:reachedNode a owl:ObjectProperty ; rdfs:label "reached node" ; oais:status "local-extension" ;
  rdfs:domain im:GapAnalysis ; rdfs:comment "A node where the network ended: covered by the Knowledge Base, or a gap. LOCAL EXTENSION." .
im:termConflict a owl:DatatypeProperty ; rdfs:label "term conflict" ; oais:status "local-extension" ;
  rdfs:domain im:GapAnalysis ; rdfs:comment "A semantic term defined differently on the object and a collection it is in, flagged for review. LOCAL EXTENSION." .

im:Gap
  a owl:Class ;
  rdfs:label "Gap" ;
  oais:status "local-extension" ;
  rdfs:comment "Gap: a Data Object, node, group member or component with no route to the Knowledge Base -- its kind, the node where the path stops (im:stopsAt), and the path. LOCAL EXTENSION." .
im:hasGap a owl:ObjectProperty ; rdfs:label "has gap" ; oais:status "local-extension" ;
  rdfs:domain im:GapAnalysis ; rdfs:range im:Gap .
im:gapKind a owl:DatatypeProperty ; rdfs:label "kind" ; oais:status "local-extension" ; rdfs:domain im:Gap .
im:stopsAt a owl:ObjectProperty ; rdfs:label "stops at" ; oais:status "local-extension" ; rdfs:domain im:Gap .
im:gapPath a owl:DatatypeProperty ; rdfs:label "path" ; oais:status "local-extension" ; rdfs:domain im:Gap .
im:gapLocator a owl:DatatypeProperty ; rdfs:label "locator" ; oais:status "local-extension" ; rdfs:domain im:Gap .
im:copyLocation a owl:DatatypeProperty ; rdfs:label "copy kept at" ; oais:status "local-extension" ;
  rdfs:domain im:RepresentationInformation ; rdfs:comment "Where the archive's copy of a specification, collected by hand, is kept: a shelf, a folder, a record. LOCAL EXTENSION." .
