Builds triples by mapping each object, embedding sub-graphs at their root.
Each object is run through mapper: a Term result becomes a direct triple object, while a Graph
result is embedded as a sub-resource and linked at its own root. That root is derived structurally rather than
supplied: the single source-only subject the encoded graph hangs off, letting encoders self-root their output at a
fresh blank node and freeing callers from threading anchors. An empty encoded graph contributes no triples.
A Graph returned by mapper must hang off a single root: exactly one subject is source-only, never
appearing in object position, and every triple is reachable from it. Reachability is all that is asked for, not a
tree shape: branches merging back into a shared node link like any other. Inverse statements are welcome deeper
inside the graph but must not point back at its root, which any incoming statement disqualifies, leaving the graph
rooted elsewhere or not at all. The shapes leaving no such root throw rather than being silently mislinked:
The domain value type accepted by mapper
The graph of emitted statements, including any embedded sub-resources
Builds direct triples, or maps each object and embeds sub-graphs at their root.