---
title: "Custom XMP namespace: when and how to declare one | LLMind"
description: "A custom XMP namespace lets you write structured metadata into any file. When to design one, how to register it, and how LLMind handles it for you."
url: https://llmind.org/learn/custom-xmp-namespace/
source_format: html
---
# Designing a custom XMP namespace

Published 2026-04-22 · 7 min read

XMP lets you declare your own namespace for structured metadata in any file. Choose between existing namespaces like Dublin Core or design your own. This covers the tradeoffs and how LLMind's LRFS solves the design problem.

## What is an XMP namespace

An XMP namespace is a URI that identifies a vocabulary of properties. Properties are prefixed with a short code. Dublin Core uses dc. The namespace URI is a permanent identifier that doesn't need to resolve—just a unique string.

Standard namespaces include Dublin Core (dc), IPTC Core, XMP Basic (xmp), and XMP Rights (xmpRights). Use them if your metadata fits. If not, design your own.

## When to design your own

You need a custom namespace if your metadata is product-specific, you want to version independently, you're building a proprietary workflow, or integrating with specialized tools.

Example: an AI tool needs properties like entityConfidence, enrichmentModel, or lineageHash. Dublin Core doesn't have these. A custom namespace lets you define them once and use everywhere.

## How to declare one

Using py3exiv2, you call registerNs to declare your namespace URI and prefix. Then use that prefix in your XMP properties.

Key points: choose your namespace URI carefully—it's permanent. The prefix is local to your code; consumers match by URI, not prefix. Registration scope varies by library.

## Common pitfalls

Don't change the URI once published. Avoid prefix collisions. Document your properties. Test serialization across formats. Be explicit about array semantics (Bag, Seq, Alt).

## How LRFS handles this

LLMind publishes a stable, fully-specified schema at a permanent namespace. Writers don't design; they use the schema. Readers know what to expect.

## FAQ

Does the namespace URI need to resolve?

No. It's just an identifier. Many namespace URIs are HTTP URLs for uniqueness, but any stable string works. The only requirement is stability. If it changes, every consumer breaks.

Can I use LRFS alongside other namespaces?

Yes. LRFS writes to a permanent namespace independently. Dublin Core, IPTC, your custom namespaces, and LRFS can all coexist in the same XMP packet. Each is isolated from the others.

### Related

-   [Working with XMP metadata in Python](https://llmind.org/learn/xmp-metadata-python/)
-   [LLM-Ready File Specification](https://llmind.org/spec/)

## Explore more

-   [Use-cases](https://llmind.org/use-cases/)
-   [Glossary](https://llmind.org/glossary/)
