Skip to content

Commit 700644e

Browse files
committed
Reconcile editorial and asset identity metadata
Add cross-family interpretation for legacy IPTC-IIM and Photoshop editorial fields, IPTC Core accessibility and taxonomy metadata, XMP document identity, and remaining bounded PLUS party, asset, release, and license-policy records. Add exact query semantics, scoped conflict handling, sensitivity classification, thin Python parity, tests, and documentation. Increase version to 0.4.80.
1 parent fd7ad2e commit 700644e

17 files changed

Lines changed: 1157 additions & 127 deletions

‎CHANGES.md‎

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,33 @@
11
# OpenMeta Changes
22

3+
## 0.4.80 - 2026-07-17
4+
5+
Changes compared with `0.4.79`.
6+
7+
### Added
8+
9+
- Added normalized descriptive roles for urgency, category, supplemental
10+
category, instructions, creator title, transmission reference, and caption
11+
writer across their equivalent IPTC-IIM and Photoshop XMP fields.
12+
- Added exact accessibility, controlled-taxonomy, and document-identity query
13+
semantics for IPTC Core accessibility text, genre/scene/subject codes,
14+
Dublin Core identifiers, XMP resource identifiers, and XMP Media Management
15+
document, instance, original-document, and rendition identifiers.
16+
- Added structured PLUS interpretation for end users, image creators, image
17+
suppliers, delivered-image identity, residual license policy, image IDs,
18+
copyright registration/publication fields, and model-age disclosure.
19+
20+
### Changed
21+
22+
- Equivalent legacy editorial values now use cross-family preference and
23+
conflict handling, while supplemental categories, scene codes, subject
24+
codes, resource identifiers, and license-document references remain
25+
additive collections.
26+
- Deprecated flat IPTC Core creator-contact properties now resolve into the
27+
same scoped contact record as the structured form.
28+
- C++ and thin Python enums expose the same new roles, record kinds, and
29+
`editorial`, `accessibility`, `taxonomy`, and `document_identity` semantics.
30+
331
## 0.4.79 - 2026-07-17
432

533
Changes compared with `0.4.78`.

‎VERSION‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.4.79
1+
0.4.80

‎docs/api_stability.md‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,19 @@ different status.
4242
Structured descriptive candidates now expose experimental `record_kind`,
4343
`record_scope`, and `sensitivity` fields. Record kinds cover creator contacts,
4444
events, people, organizations, products, artwork/objects, rights expressions,
45-
rights holders, licensors, licensees, licenses, and releases. Sensitivity is a
45+
rights holders, licensors, licensees, licenses, releases, end users, image
46+
creators, image suppliers, and image assets. Sensitivity is a
4647
policy signal independent of technical transfer safety; the same fields are
4748
mirrored in transfer diagnostics and thin Python dictionaries. Hosts must not
4849
interpret `safe` as approval to publish personal-contact, person-identity,
4950
location, or legal-rights metadata.
5051

52+
Exact descriptive query semantics also cover legacy editorial workflow pairs,
53+
IPTC Core accessibility and taxonomy fields, resource/document identity, and
54+
remaining bounded PLUS party, delivered-asset, and license-policy fields.
55+
Equivalent scalar pairs participate in preference/conflict handling; taxonomy,
56+
resource-identifier, and license-document collections remain additive.
57+
5158
The bounded BMFF tiled-image field contract covers `tilC` version 0 tile
5259
dimensions, up to eight extra dimensions, `dref`/`deti` mapping, internal
5360
`tile_item_type`/`tipa` associations, bounded external URL components, logical

‎docs/development.md‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ model should stay compact:
1717
| Area | Purpose | Readiness |
1818
| --- | --- | --- |
1919
| Decoding | Find metadata carriers and decode EXIF, XMP, IPTC, ICC, Photoshop IRB, JUMBF/C2PA, EXR, and related blocks into `MetaStore` entries. | High, about 98-100% for the current target scope. |
20-
| Interpretation | Normalize names and values, group entries by meaning, and classify source-bound data such as RAW crop, exposure adjustment, color/profile/source-color-transform evidence, RAW curves/linearity metadata with descriptor-backed compressed-storage applicability, lens-correction, sensor, BMFF brand/item-property associations and rollups including `avio` AVIF brands, item groups, item semantic counts, whole-scene policy hints, graph-component summaries with per-component roles, member item IDs, semantic composition, typed relation counts, bounded `grid`/`iovl`/`iden` construction semantics with recursive item-offset descriptors and graph-cycle/source validation, bounded complete `tili` configuration/reference/offset-table interpretation, `container_graph` concepts, primary item properties, primary metadata-carrier flags, primary sidecar and scene summaries, and display-transform summaries, JUMBF labels, Photoshop IRB embedded carriers plus fixed-layout, XML/text, working-path and numbered clipping-path records, byte-count, descriptor-header, scalar/class/alias/enum/reference, and bounded nested list/object summaries, EXIF 3.1 correction/noise labels, version/firmware-style value formatting for selected EXIF/Nikon/Olympus/native RAF contexts, selected Sony ILCE-7RM6 correction-offset routing, Fujifilm flash white-balance naming, Apple/FLIR/JVC/GE/Reconyx/Microsoft/Nintendo/Sanyo scalar MakerNote labels, current Canon RF/Nikon Z lens labels, an ambiguous Pentax Sigma/Samsung/Tokina lens-family label, EXIF/XMP GPS timestamp composites, EXIF `OffsetTime*`/`SubSecTime*` date composition with normalized-instant conflict checks, separate camera/destination/shown/created GPS roles with scope-aware structured-location conflicts, language-aware descriptive roles, structured creator-contact/event/person/organization/product/artwork/rights/license/release records, independent privacy/policy sensitivity, computational, thermal, stitch/panorama capture state, and vendor-private fields. | High, about 98-99%. |
21-
| Query | Find entries by name, fuzzy term, or semantic group, then expose normalized query candidates, structured interpretation records, bounded cross-family concept resolutions, transfer hints, sensitivity, and conflict flags for crop/border/active-area, exposure/gain, color/WB/profile/source-color-transform, orientation, date/time, GPS, descriptive fields including contact/event/person/organization/product/artwork/rights/license/release semantics, lens-correction, computational/thermal/stitch, RAW/source-processing fields, and BMFF derived-image construction and tiled-image configuration evidence across standard and vendor metadata. | High, about 96-98%. |
20+
| Interpretation | Normalize names and values, group entries by meaning, and classify source-bound data such as RAW crop, exposure adjustment, color/profile/source-color-transform evidence, RAW curves/linearity metadata with descriptor-backed compressed-storage applicability, lens-correction, sensor, BMFF brand/item-property associations and rollups including `avio` AVIF brands, item groups, item semantic counts, whole-scene policy hints, graph-component summaries with per-component roles, member item IDs, semantic composition, typed relation counts, bounded `grid`/`iovl`/`iden` construction semantics with recursive item-offset descriptors and graph-cycle/source validation, bounded complete `tili` configuration/reference/offset-table interpretation, `container_graph` concepts, primary item properties, primary metadata-carrier flags, primary sidecar and scene summaries, and display-transform summaries, JUMBF labels, Photoshop IRB embedded carriers plus fixed-layout, XML/text, working-path and numbered clipping-path records, byte-count, descriptor-header, scalar/class/alias/enum/reference, and bounded nested list/object summaries, EXIF 3.1 correction/noise labels, version/firmware-style value formatting for selected EXIF/Nikon/Olympus/native RAF contexts, selected Sony ILCE-7RM6 correction-offset routing, Fujifilm flash white-balance naming, Apple/FLIR/JVC/GE/Reconyx/Microsoft/Nintendo/Sanyo scalar MakerNote labels, current Canon RF/Nikon Z lens labels, an ambiguous Pentax Sigma/Samsung/Tokina lens-family label, EXIF/XMP GPS timestamp composites, EXIF `OffsetTime*`/`SubSecTime*` date composition with normalized-instant conflict checks, separate camera/destination/shown/created GPS roles with scope-aware structured-location conflicts, language-aware descriptive roles, legacy editorial duplicate reconciliation, accessibility/taxonomy/document-identity semantics, structured creator-contact/event/person/organization/product/artwork/rights/license/release/end-user/image-creator/image-supplier/image-asset records, independent privacy/policy sensitivity, computational, thermal, stitch/panorama capture state, and vendor-private fields. | High, about 98-99%. |
21+
| Query | Find entries by name, fuzzy term, or semantic group, then expose normalized query candidates, structured interpretation records, bounded cross-family concept resolutions, transfer hints, sensitivity, and conflict flags for crop/border/active-area, exposure/gain, color/WB/profile/source-color-transform, orientation, date/time, GPS, descriptive fields including contact/event/person/organization/product/artwork/rights/license/release, editorial, accessibility, taxonomy, and document-identity semantics, lens-correction, computational/thermal/stitch, RAW/source-processing fields, and BMFF derived-image construction and tiled-image configuration evidence across standard and vendor metadata. | High, about 97-99%. |
2222
| Creation | Build fresh metadata entries from host-provided values. | Medium, about 55-65%. |
2323
| Editing | Modify existing logical metadata entries while preserving valid surrounding structure. | Medium, about 60-70%. |
2424
| Transfer | Move metadata between files using explicit compatible-file or rendered-image safety policies. | Medium-high, about 80-85%. |
@@ -100,7 +100,8 @@ compare keys, parsed date/time fields, date/time precision, timezone kind, GPS
100100
altitude-reference state, distinct destination/shown/created coordinate roles,
101101
structured-location scope, normalized descriptive language, additive
102102
collection preference, structured record kinds and scopes for editorial,
103-
rights, license, and release records, independent policy sensitivity,
103+
rights, license, release, end-user, image-creator, image-supplier, and
104+
image-asset records, independent policy sensitivity,
104105
canonical geometry origin/size/rect/margins,
105106
normalized exposure values, full normalized value vectors for grouped
106107
matrix/vector/table records, transfer hints, compatible and rendered safety

‎docs/host_integration.md‎

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,11 @@ Descriptive concepts reconcile standard EXIF, IPTC IIM, Dublin Core,
8585
XMP Rights, Photoshop, IPTC Core/Extension, and PLUS title/headline,
8686
description, creator, keyword/subject, location, copyright, rights/license,
8787
credit, source, creator-contact, event, person, organization, product,
88-
artwork/object, encoded-rights-expression, license-constraint, and release
89-
fields. Scalar conflicts are isolated by normalized language and structured
90-
location scope; additive collections retain distinct values. Structured
88+
artwork/object, encoded-rights-expression, license-constraint, release,
89+
legacy editorial, accessibility, taxonomy, resource/document identity,
90+
end-user, image-creator, image-supplier, and delivered-image fields. Scalar
91+
conflicts are isolated by normalized language and structured location scope;
92+
additive collections retain distinct values. Structured
9193
members carry both a `record_kind` and `record_scope`, such as `person` plus
9294
`Person[1]`, so hosts can keep associated names, identifiers, descriptions,
9395
contacts, constraints, and release records together.

0 commit comments

Comments
 (0)