. . . . "Returns every current MIRA record as quads, for bulk import into another system. Each row is one statement with its named graph, so the graph pointers inside a record resolve to graphs the caller also received. Columns: np (the nanopublication, fetch it with Accept: application/trig to get the signed original), created (the sync cursor), subj, pred, obj, graph. Optional parameters: class restricts to one MIRA class; since returns only records created strictly after that timestamp, so re-pulling with the newest value seen returns nothing; part selects head, assertion, provenance or pubinfo, or all, and defaults to assertion plus provenance; examples=include adds the demo records, which are excluded by default. Request application/sparql-results+json rather than CSV: CSV drops datatypes and language tags, and MIRA titles contain commas. Coupled to the shared MIRA record type (https://w3id.org/spaces/mira/r/MiraRecord)." . . . "Get MIRA records as quads" . . "prefix np: \nprefix npa: \nprefix npx: \nprefix dct: \nprefix mira: \n\nselect ?np ?created ?subj ?pred ?obj ?graph where {\n # Every record of the shared MIRA record type. The type repository holds only\n # current versions, so a superseded record never leaves this endpoint.\n graph npa:graph {\n ?np npx:hasNanopubType ;\n dct:created ?created .\n }\n # Optional narrowing to one MIRA class. Absent, ?class falls back to the record\n # type itself, so the extra pattern is a no-op rather than a second binding.\n bind(coalesce(?__class_iri, ) as ?class)\n graph npa:graph { ?np npx:hasNanopubType ?class . }\n # Incremental sync: pass the newest ?created seen on the previous pull.\n # Strict, so re-pulling with the last timestamp returns only what is new.\n bind(coalesce(?__since, \"0000\") as ?since)\n filter(?since < str(?created))\n # Demo records carry npx:ExampleNanopub. They are excluded by default: importing\n # example data into a live system is worse than missing it. OPTIONAL + !bound rather\n # than NOT EXISTS, which mis-plans here.\n optional {\n graph npa:graph { ?np npx:hasNanopubType ?example . }\n filter(?example = npx:ExampleNanopub)\n }\n bind(coalesce(?__examples, \"exclude\") as ?ex)\n filter(?ex = \"include\" || !bound(?example))\n {\n # The Head graph has no pointer predicate of its own: it is the graph in which the\n # nanopublication declares itself. Must exclude npa:graph, which mirrors that triple.\n graph ?graph { ?np a np:Nanopublication . }\n filter(?graph != npa:graph)\n bind(\"head\" as ?part)\n } union {\n graph npa:graph { ?np np:hasAssertion ?graph . }\n bind(\"assertion\" as ?part)\n } union {\n graph npa:graph { ?np np:hasProvenance ?graph . }\n bind(\"provenance\" as ?part)\n } union {\n graph npa:graph { ?np np:hasPublicationInfo ?graph . }\n bind(\"pubinfo\" as ?part)\n }\n # Default is the MIRA content and its attribution: assertion + provenance. Head and\n # pubinfo are available but not sent unless asked, so a default pull carries neither\n # the role declarations nor dct:license. Pass part=all for a complete, self-consistent\n # nanopublication; a single part name selects just that graph.\n bind(coalesce(?__part, \"default\") as ?want)\n filter(?want = \"all\" || ?want = ?part\n || (?want = \"default\" && (?part = \"assertion\" || ?part = \"provenance\")))\n graph ?graph { ?subj ?pred ?obj . }\n}\norder by ?created ?np ?graph ?subj ?pred ?obj\nlimit 50000\n" . . "Tobias Kuhn" . "2026-10-02T09:24:44Z"^^ . . . . "Get MIRA records as quads" . . . . . "RSA" . "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB" . "TOkO9iC1qV4G7XwYYGZZEOAWHeaGTkMpn6nN38WWwVsRUveJ6UfbgQLYdLV5UHpVmLETgdNqmB1rbjAX643c0m1Gydpvi/C1K04u/L+QqtxECxqwN8i/aYulQr2iajBUKIIklO7dpwO/99BLsPwVKBgSHxeaawXwGi4I6SRxcys=" . . .