What is Turtle, the RDF syntax a Solid pod speaks by default?
Turtle is a way of writing RDF down, and Solidus writes none of it.
The syntax, and the one thing that makes it unusual
RDF is a model of triples. That is a separate page. Turtle is one way of writing those triples as text, and its distinguishing property is that a person can read it.
<#me> a <http://xmlns.com/foaf/0.1/Person> ;
<http://xmlns.com/foaf/0.1/name> "Ada" ;
<http://xmlns.com/foaf/0.1/knows> <https://example.org/bob#me> .
Semicolon means "same subject, next predicate". Full stop ends the statement. That is most of it.
Why that matters more than it sounds: a Solid pod's default wire format is something you can
curl and simply read. You do not need a viewer, a decoder, or the vendor's console to see what is
stored about you, which is a genuinely unusual property for a personal-data system, and it belongs
to Solid rather than to us.
The costs, stated plainly
- Verbosity. Full URLs everywhere unless you declare prefixes, and prefixes are another thing to learn.
- Unfamiliarity. Every developer can read JSON at a glance. Turtle needs five minutes first, and five minutes is enough to lose people.
- Thinner tooling. Parsers exist in the major languages, but the ecosystem around them is smaller than JSON's by orders of magnitude.
For a system whose data never leaves it, Turtle is cost with no benefit. It pays off precisely when data has to be read by parties who did not build your system.
What Solidus does here: nothing
We have not written a Turtle parser, a serialiser, or tooling for it. The term's status in our own lexicon is not-built, and this page is not going to imply otherwise.
What runs is the Community Solid Server, and its Turtle handling is the Solid community's engineering. You can watch it negotiate without an account:
$ curl -sI -H 'Accept: text/turtle' https://pod.solidus.network/profile/card
HTTP/2 401
content-type: text/turtle ← asked for Turtle, got Turtle, even in the refusal
$ curl -sI https://pod.solidus.network/profile/card
content-type: application/json ← no Accept header, different type
What that proves, and only that: the server does RDF content negotiation. It does not prove the resource exists, and it does not mean Solidus implements Turtle.
And a probing note for this host: an unknown path returns 401, not 404, unknown paths fall through to the Solid server. A 401 here tells you nothing about whether something exists, which is the opposite of the convention on our other hosts.
Where our own work sits
Nowhere near this. Our identifiers are anchored on a chain rather than resolved from a domain, and that difference is a bet, not a result, it is also orthogonal to syntax. A document describing an identifier can be written as Turtle, as JSON, or as both, and the choice changes nothing about what the identifier is.
We are not proposing Turtle be replaced. Where our pod stores Turtle, it stores it because Solid's server does.
What this does not settle
A readable format is not a trustworthy one. Turtle makes a statement legible; it says nothing about whether the statement is true or who is entitled to write it. Legibility and trust are different problems, the trust one lives here, and who may write and read lives here.