@prefix this: . @prefix sub: . @prefix schema: . @prefix gen: . @prefix np: . @prefix dct: . @prefix nt: . @prefix npx: . @prefix xsd: . @prefix rdfs: . @prefix prov: . sub:Head { this: a np:Nanopublication; np:hasAssertion sub:assertion; np:hasProvenance sub:provenance; np:hasPublicationInfo sub:pubinfo . } sub:assertion { sub:paragraph a gen:Paragraph; schema:about ; schema:title "The query endpoint"; gen:hasContent """

Every query template names the repository it runs against, as the object of <https://w3id.org/kpxl/grlc/endpoint> in its assertion. The usual choice is the full repository, which holds every loaded nanopublication:

<https://w3id.org/np/l/nanopub-query-1.1/repo/full>

Other repositories are narrower and therefore faster: meta for nanopublication metadata, text for full-text search, last30d for recent nanopublications, and a per-type repository type/<hash> or per-key repository pubkey/<hash>. Two further repositories, spaces and trust, hold the server-side computed state of space membership and of the agent-to-key trust network; a query can reach them from another repository with a federated service clause.

Always write the endpoint with the generic w3id.org/np/l/nanopub-query-1.1/ prefix rather than the host name of one instance. The prefix is rewritten to whichever instance answers the query, so a template naming a single host stops working as soon as that host does.

"""; gen:hasPositionString "01.015" . } sub:provenance { sub:assertion prov:wasAttributedTo . } sub:pubinfo { this: dct:created "2026-09-09T14:46:50Z"^^xsd:dateTime; dct:creator ; dct:license ; npx:introduces sub:paragraph; rdfs:label "The query endpoint"; nt:wasCreatedFromProvenanceTemplate ; nt:wasCreatedFromPubinfoTemplate , ; nt:wasCreatedFromTemplate . sub:sig npx:hasAlgorithm "RSA"; npx:hasPublicKey "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl8cMusqtNyKA6UIsi3f7BAcZmHQXWxU0qk0PLsboMWQxYrGBfGgHTgRHJrBRxL+Zn9kJHKVmz2smDcjCBptXi/OwWy80gjsx+Pbe6IWz3zFPWF1UoFIKfPnC0slV67CQgdM853zW7Bmk9/uflCtK4EtZKmPdRGtUHVC7DTVvDBMDzLRGdE2KCBVN29EbM5GGVNvijYbaZQ9OFQPBkQshayqSIyGRr6rreJdkrRVLIzu3uuAjKYydaeXZWSN2JLnVBwrClKUxaEdCwhb5nXpMtKOMD+R+LgaXLeJUWM8BdRSYnta9ZqI5pHY4y3v+eW7J+HHeTvRbHvlik+Z4hFUXmQIDAQAB"; npx:hasSignature "VfWamlMJIDFApHk1Qn9WPwEJhpHF/RpZYd1BOUMsfYpJqc2ZUADh0F9C4VKeKuwoYSQSe4nEodvXKD3+rYWIqZQPbgHR7pf5EceLLUwnPZhp+CpBlBO33Xr5tDl0H0nlk0GwhHqyUYPD9A5RxVhalMgXaKrzgxOhe9dh2ynNwVwfY5G+AII/FSrXM8FEI9pzIAOk2/jBPnj9kao+9mEW5cwQBCbBBuehdK+AAg8hfkS3NpURn8/qTvWfnTvT7dW/RjCJf+nruaKKD64foe65Oi4bz5fPuMnV5iixQpz7wp8D1VhrfQ1jVuTDL30v4v2wDxNQ6SnbourhnRyHmgceRg=="; npx:hasSignatureTarget this:; npx:signedBy . }