- From: Jesse Wright <jesse.wright@theodi.org>
- Date: Mon, 2 Mar 2026 11:30:30 +0000
- To: public-rdfjs@w3.org
- Cc: Samu Lang <samu.lang@theodi.org>, Matthieu Bosquet <matthieu.bosquet@theodi.org>
- Message-ID: <CAJbzXEWqm7JmAoWr11txUo5hFz2Vc+96vuy_4J__xpkxOqL=1g@mail.gmail.com>
Hey everyone, We're thrilled to introduce the new RDF/JS Wrapper! ๐ This object-relational mapping library is designed to make working with RDF data in JavaScript incredibly smooth, native, and idiomatic. Our goal is to give developers a really low-friction experience. ๐ก What does it do? It lets you create standard ES classes that model the datasets and terms you're working with. Class properties magically represent statement arcs (incoming or outgoing) โจ, and accessing these properties translates directly into the graph patterns needed to read and write the corresponding statements. This is all built on utility methods from one of two simple base classes. ๐๏ธ When you use these mapping classes, you get a mutable, in-memory object graph that feels just like standard JavaScriptโthink familiar Objects, Sets, Maps, and Arrays. But here's the cool part: this object graph keeps a live connection to the underlying RDF data, allowing you to treat it as RDF via the RDF/JS abstractions without losing any information. ๐ Check out some of the features and design choices that make this library stand out: - Simple Foundation: We provide two abstract classes with utility methods for mapping RDF to JS patterns, plus a few helpers for predicate-object lists, RDF collections (rdf:List), and language-tagged dictionaries. ๐งฑ - Pure JavaScript: The resulting mapping constructs are just plain JS objects. No DSLs, no Proxies, no global context, and zero new conventions to memorize. โ๏ธ - Zero Dependencies: By adhering strictly to the RDF/JS data model (Terms and DatasetCore), we remain completely agnostic about the specific RDF implementation you choose. ๐ง - Bi-Directional Mapping: All mappings optionally support both reading and writing single statements, predicate-object lists, and collections. ๐ - Runtime Ready: No build step is required! ๐จ - Modern JS: Built using ES modules. ๐ป - Comprehensive RDF Support: Supports named nodes, blank nodes, arbitrary literal datatypes, arbitrary JS primitives, custom JS/TS classes, and named graphs. ๐ - Familiar OO: We support standard object-oriented concepts: optional vs. required properties, singular vs. collection properties, property getters/setters, and inheritance. ๐ - Total Control: You have full control over the shape and logic of your mapping artifacts. You can choose class and property names freely, independent of existing RDFS/SKOS/OWL/SHACL vocabularies. This is great for mixing and matching vocabularies, as we only rely on a predicate IRI. The vocabulary doesn't even need to be published or exist! ๐ - Fully Dynamic & Live: Instances are lazily loaded, so the mapping is always up to date with the underlying RDF datasetโno synchronization needed. And mutation (using setters, or adding/deleting from sets/arrays) is immediate, materializing statements instantly in the dataset. ๐ก - Universal Support: Works in the browser and in Node.js, for both plain JavaScript and TypeScript. ๐ - Future-Proof: Support for RDF 1.2 is built in via the RDF/JS data model. ๐ฎ To be clear, hereโs what the library doesnโt focus on (but youโll likely need another tool for!): - Retrieving or persisting data from remote sources. ๐ซ - Authentication, caching, and network resilience. ๐ก๏ธ - Integrating into frameworks like React. โ๏ธ - Parsing and serializing various formats. ๐ค - Indexing, performance optimisation, or validation. โ๏ธ - Querying, traversing, or reasoning. ๐บ๏ธ The library is available under a dual MIT/Apache 2.0 license over at https://github.com/rdfjs/wrapper. ๐ Weโre currently publishing the package as rdfjs-wrapper on GitHub. We plan to move it to @rdfjs/wrapper on Monday, March 9th. Please donโt hesitate to reach out before then if you have any questions or concerns about this move! ๐ง Looking forward to hearing what you think! ๐ Best, -- *Jesse Wright (he/him)* *Project Lead, Solid <https://theodi.org/news-and-events/news/odi-and-solid-come-together-to-give-individuals-greater-control-over-personal-data/>* The Open Data Institute 4th Floor, Kings Place, 90 York Way, London, N1 9AG Website: theodi.org Book a meeting: https://calendar.app.google/hv63aFQyL6jgjiXG9 Tel: +44 7862381515 *My work day may look different than yours. Please do not feel obligated to respond outside of your normal working hours.*
Received on Monday, 2 March 2026 11:30:46 UTC