prefix-register
Status: Beta - API may change before 1.0 release.
A PostgreSQL-backed namespace prefix registry for CURIE expansion and prefix management.
Features
- Async-only - Built on tokio for high concurrency
- In-memory caching - Prefixes loaded on startup for fast CURIE expansion
- First-prefix-wins - Each URI can only have one registered prefix
- Batch operations - Efficiently store multiple prefixes at once
- PostgreSQL backend - Durable, scalable storage with connection pooling
Use Cases
- CURIE expansion in RDF processing
- Namespace prefix management for semantic web applications
- Prefix discovery from Turtle, JSON-LD, XML documents
Installation
Add to your Cargo.toml:
[]
= "0.1"
= { = "1", = ["rt-multi-thread"] }
Database Setup
Create the namespaces table in your PostgreSQL database:
(
uri TEXT PRIMARY KEY,
prefix TEXT NOT NULL UNIQUE
);
Usage
use PrefixRegistry;
async
API
PrefixRegistry
new(database_url, max_connections)- Connect to PostgreSQL and load existing prefixesget_uri_for_prefix(prefix)- Get the URI for a prefix (cache-first)get_prefix_for_uri(uri)- Get the prefix for a URIstore_prefix_if_new(prefix, uri)- Store a prefix if the URI doesn't have one (returnsbool)store_prefixes_if_new(prefixes)- Batch store prefixes (returnsBatchStoreResult)expand_curie(prefix, local_name)- Expand a CURIE to a full URIget_all_prefixes()- Get all registered prefix mappingsprefix_count()- Get the number of registered prefixes
BatchStoreResult
Returned by store_prefixes_if_new() for detailed reporting:
stored: usize- Number of new prefixes storedskipped: usize- Number of prefixes skipped (URI already had a prefix)total()- Total prefixes processedall_stored()- Returns true if all were storednone_stored()- Returns true if none were stored
License
Apache-2.0