Export materializes x-oold-instance-rdf-type as @type on the root node only (roundtrip.py#L191-L193). A node nested under an embedded property therefore lands in the graph without an rdf:type, and a type-filtered frame cannot see it: an Organization document with nested employees (persons, mapped @reverse schema:worksFor) exports its worksFor triples fine, but framing the resulting graph by the Person schema returns nothing unless every nested object authored its own type.
The spec's own framing example depends on this: its derived frame filters the nested address by "address": {"type": "schema:PostalAddress"}, which only matches if export put that type on the nested node.
Proposal: on export, type nested nodes from the schema of the property that embeds them - x-oold-instance-rdf-type inline on the property (or items) subschema, or resolved from the $ref / x-oold-range target schema. Authored types win; a property schema declaring no type leaves the node untyped, as today.
The playground's _materialize_types implements the inline case.
Export materializes
x-oold-instance-rdf-typeas@typeon the root node only (roundtrip.py#L191-L193). A node nested under an embedded property therefore lands in the graph without anrdf:type, and a type-filtered frame cannot see it: an Organization document with nestedemployees(persons, mapped@reverse schema:worksFor) exports itsworksFortriples fine, but framing the resulting graph by the Person schema returns nothing unless every nested object authored its owntype.The spec's own framing example depends on this: its derived frame filters the nested address by
"address": {"type": "schema:PostalAddress"}, which only matches if export put that type on the nested node.Proposal: on export, type nested nodes from the schema of the property that embeds them -
x-oold-instance-rdf-typeinline on the property (oritems) subschema, or resolved from the$ref/x-oold-rangetarget schema. Authored types win; a property schema declaring no type leaves the node untyped, as today.The playground's _materialize_types implements the inline case.