The Problem with Standard RDF

In standard RDF, you can attach metadata to nodes easily:

:paper_42 :confidence 0.91 .
:paper_42 :hasEmbedding "0.23 -0.11 0.87 ..."^^loka:f32vec .

But attaching metadata to an edge (a relationship) requires reification — creating an intermediate node to represent the statement itself:

# Standard RDF reification: verbose and ugly
:stmt1 rdf:type rdf:Statement .
:stmt1 rdf:subject :paper_42 .
:stmt1 rdf:predicate :discusses .
:stmt1 rdf:object :TransformerArchitecture .
:stmt1 :confidence 0.91 .

That is 5 triples to say "paper_42 discusses TransformerArchitecture with confidence 0.91." The intermediate node :stmt1 has no meaning — it exists only to hold the metadata.

RDF-star: Quoted Triples

RDF-star lets you use a triple directly as the subject or object of another triple:

# RDF-star: clean and direct
<< :paper_42 :discusses :TransformerArchitecture >> :confidence 0.91 .

One triple. No intermediate node. The quoted triple << :paper_42 :discusses :TransformerArchitecture >> is the subject, and :confidence 0.91 is the predicate-object pair.

Vector Embeddings on Edges

This is where RDF-star becomes critical for Loka. You can attach a vector embedding to a relationship, not just a node:

# Embedding on an edge
<< :paper_42 :discusses :TransformerArchitecture >>
    :hasEmbedding "0.23 -0.11 0.87 ..."^^loka:f32vec .

# Now you can do vector search over relationships:
# "Find edges semantically similar to this one"

Without RDF-star, this would require reification (5 triples per annotated edge) and the vector index would have to point at artificial intermediate nodes instead of real relationships.

Implementation: Content-Addressed IDs

Loka assigns each quoted triple a deterministic u64 ID by hashing its three component IDs. This means: