What is RDF (Resource Description Framework)?
RDF is the data model the Solid protocol is built on, and Solidus builds nothing for it.
The idea, in one sentence
Everything is a statement of three parts: subject, predicate, object.
<me><knows><you><me><is named>"Ada"
That is the whole model. Not tables, not documents, not objects, triples. A dataset is just a pile of them, and because every part is either a globally unique identifier or a literal value, two piles from two unrelated systems can be merged without anybody agreeing a schema in advance.
Why anyone chose this for personal data
Merging is the point. A personal data store collects things from many places, a calendar, a health record, a contact list, written by parties who never coordinated.
- A relational schema would require agreement up front, which never happens across organisations.
- A document store would let each writer invent its own shape, so nothing composes.
- Triples compose by construction: two statements about the same subject are about the same subject, whoever wrote them, because the subject is a URL.
That property is why Solid uses RDF, and it is a genuinely good reason.
The cost, which is real
RDF is harder to work with than JSON, and pretending otherwise is why people bounce off it.
- The tooling is thinner. Every language has a JSON parser; RDF libraries are fewer and less familiar.
- Querying is its own language. Filtering a pile of triples is not
data.items.filter(...). - The learning curve is front-loaded. The model is simple; the ecosystem around it is not.
If your data never leaves your own system, RDF buys you nothing and costs you time. It earns its keep exactly when data has to travel between parties who did not plan for each other.
What Solidus does here: nothing
We have not built RDF support, and this page is not going to imply we have. The term's status in our own lexicon is not-built.
What runs is the Community Solid Server, the Solid community's reference implementation. RDF handling in our deployment is their engineering. We did not write it, we did not extend it, and we would not be able to claim it.
You can see it working without an account:
$ curl -sI -H 'Accept: text/turtle' https://pod.solidus.network/profile/card
HTTP/2 401
content-type: text/turtle
The server honoured the request for RDF even while refusing to hand over the resource. What that proves is narrow and worth stating: the server negotiates RDF. It does not prove the resource exists, and it does not mean Solidus implements RDF.
And a probing note for this host: an unknown path here returns 401, not 404, unknown paths fall through to the Solid server. A 401 tells you nothing about whether something exists.
Where our own work sits relative to it
Our identifiers are anchored on a chain rather than resolved from a domain. That difference is a bet, not a result, and it is orthogonal to RDF: a DID document can be serialised as RDF or as plain JSON, and the choice does not change what the identifier is.
We are not proposing RDF be replaced with anything. Where our pod stores RDF, it stores it because Solid's server does.
What this does not settle
RDF says nothing about whether a statement is true. A pile of triples merges cleanly and lies just as cleanly, the model is about shape, not truth. Deciding whether to believe a statement is a different layer entirely, and the honest version of that layer's status is on its own page.