. . . . "This query returns the paragraphs of an entity (a space, maintained resource or user) with their title and content, including source nanopub and date. Only the current version of each paragraph is returned: a paragraph nanopub is replaced by a newer one that supersedes it or was derived from it and keeps the same paragraph IRI, when that newer one is signed by the same key, or by an admin, maintainer or member of the space (for a maintained resource: of the space maintaining it) or, on a user page, by the user themselves; such a replacing version typed gen:DeactivatedParagraph removes the paragraph. The edit_target and edit_template columns are action data rather than content: edit_target carries the row's own nanopublication so that a view can offer an in-place edit that republishes it in override mode -- keeping the paragraph IRI and its root definition, so the edited text replaces the old one instead of appearing next to it, also when the editor is not the original author -- and edit_template the template that nanopublication was created from, so the edit form matches how the paragraph was written. Paragraphs whose nanopublication records no template fall back to the generic hand-coded-statements template, whose single repeatable subject/predicate/object statement matches any triple. Both columns are action-mapping sources and are therefore not rendered." . . . "Get paragraphs of an entity" . . "prefix rdf: \nprefix rdfs: \nprefix dct: \nprefix np: \nprefix npa: \nprefix npx: \nprefix schema: \nprefix schemas: \nprefix gen: \nprefix nt: \nprefix prov: \n\n# The paragraphs of a resource page (space, maintained resource or user), with only the\n# current version of each paragraph. A paragraph nanopub is replaced by a newer one that\n# supersedes it or was derived from it (supersede and override edits), keeps the same\n# paragraph IRI, and is signed by the same key or by someone with authority over the page:\n# an admin, maintainer or member of the space (for a maintained resource: of the space\n# maintaining it), or, on a user page, the user themselves. Replacement is keyed on the\n# explicit link between the two nanopubs rather than on the paragraph IRI alone, because\n# older paragraph nanopubs share one paragraph IRI across unrelated paragraphs.\nselect ?title ?content ?date (str(?np) as ?edit_target) (str(coalesce(?srcTemplate, )) as ?edit_template) ?np where {\n # One row holding every authorized pubkey hash, space-separated. A sub-select sharing\n # no variables with the outer query, so it is evaluated once rather than per row.\n service {\n select (group_concat(distinct ?mpk; separator=\" \") as ?memberPubkeys) where {\n graph npa:graph { npa:thisRepo npa:hasCurrentSpaceState ?stateG . }\n values ?_resource_multi_iri {}\n {\n graph ?stateG {\n ?_resource_multi_iri npa:isMaintainedBy? ?space .\n ?ri a gen:RoleInstantiation ; npa:forSpace ?space ; npa:forAgent ?agent ;\n npa:hasRoleType ?roleType .\n ?acct a npa:AccountState ; npa:agent ?agent ; npa:pubkey ?mpk .\n }\n # Observers are excluded: that tier can be self-attested and so is no gate at all.\n filter(?roleType in (gen:AdminRole, gen:MaintainerRole, gen:MemberRole))\n } union {\n graph ?stateG { ?acct2 a npa:AccountState ; npa:agent ?_resource_multi_iri ; npa:pubkey ?mpk . }\n }\n }\n }\n graph npa:graph {\n ?np npa:hasValidSignatureForPublicKeyHash ?npPubkey ;\n dct:created ?date ;\n np:hasAssertion ?a .\n filter not exists { ?npx npx:invalidates ?np ; npa:hasValidSignatureForPublicKeyHash ?npPubkey . }\n }\n values ?_resource_multi_iri {}\n graph ?a {\n ?paragraph rdf:type gen:Paragraph ;\n schema:title|schemas:title ?title ;\n gen:hasContent ?content ;\n schema:isPartOf|schemas:isPartOf ?_resource_multi_iri .\n optional { ?paragraph gen:hasPositionString ?position }\n }\n optional {\n graph npa:graph { ?np np:hasPublicationInfo ?srcPubinfo . }\n graph ?srcPubinfo { ?np nt:wasCreatedFromTemplate ?srcTemplate . }\n }\n # Replaced by a valid newer edit (see above). A replacing version typed\n # gen:DeactivatedParagraph removes the paragraph. The key filter must sit outside the\n # graph blocks: ?memberPubkeys is bound by the service above.\n filter not exists {\n graph npa:networkGraph { ?np2 npx:supersedes|prov:wasDerivedFrom ?np . }\n graph npa:graph {\n ?np2 npa:hasValidSignatureForPublicKeyHash ?np2Pubkey ;\n np:hasAssertion ?a2 .\n filter not exists { ?npx2 npx:invalidates ?np2 ; npa:hasValidSignatureForPublicKeyHash ?np2Pubkey . }\n }\n graph ?a2 { ?paragraph rdf:type ?type2 . }\n values ?type2 { gen:Paragraph gen:DeactivatedParagraph }\n filter(?np2Pubkey = ?npPubkey || contains(?memberPubkeys, ?np2Pubkey))\n }\n}\norder by ?position ?title\n" . . "Tobias Kuhn" . "2026-09-18T14:17:54Z"^^ . . . . . . . . . . . . "RSA" . "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB" . "EK8ZbnduEeeiXcO90INMSyycgLdvJFzc+wdMzRluc5L1Om/voT5hTOJvAZImOqDDgVD0ap57FBwY/nSVn3GqS6x5o80XCnJpSrpUsgzCnRb6atUVoDyGbOq9FHfJAVW8Sbfce+lYkM50lZiROzmDKs6hMN7rIqgGs++rRkZJ9nA=" . . .