https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0/Head https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0 http://www.nanopub.org/nschema#hasAssertion https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0/assertion https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0 http://www.nanopub.org/nschema#hasProvenance https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0/provenance https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0 http://www.nanopub.org/nschema#hasPublicationInfo https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0/pubinfo https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0 http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.nanopub.org/nschema#Nanopublication https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0/assertion https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0/get-user-introductions http://purl.org/dc/terms/description Returns the introduction nanopublications of a given user (creation date if stated, key location, declared public-key hashes), plus session-relative action targets from the viewer's local key (?__LOCALPUBKEY_multi) and site URL (?__SITEURL_multi): conditional retract/derive targets that are owner-gated (?_user_iri = ?__CURRENTUSER_multi_iri) and computed against the same notion of a 'local introduction' as the UI: an introduction SIGNED BY the local key, DECLARING the local key, whose local-key declaration has no location or matches the site URL (nanobench->nanodash). retract_target fires on a local introduction when there is more than one (duplicate cleanup); derive_target fires on a non-local introduction when there are zero local introductions. approve_target fires whenever the viewer has a local key that is NOT among the keys declared by that introduction, so that other agents can approve of somebody else's introduction, and the user themselves can approve an additional introduction from an already approved key (self-approval with the very key being introduced is pointless and therefore suppressed). The retract/derive/approve/local columns are action-mapping data (hidden from display by the result builders). The keys column annotates each declared key hash with its trust-approval status, federated from the trust repo: a checkmark when the key is loaded/approved for the user, a warning sign otherwise. Introductions without dct:created (e.g. made with nanopub-js before 0.7.0) are included and listed last. https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0/get-user-introductions http://purl.org/dc/terms/license http://www.apache.org/licenses/LICENSE-2.0 https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0/get-user-introductions http://www.w3.org/1999/02/22-rdf-syntax-ns#type https://w3id.org/kpxl/grlc/grlc-query https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0/get-user-introductions http://www.w3.org/2000/01/rdf-schema#label Get user introductions https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0/get-user-introductions https://w3id.org/kpxl/grlc/endpoint https://w3id.org/np/l/nanopub-query-1.1/repo/type/77757cabf6184c51c20b8b0fe5dc5e1365b7f628448335184ad54319a0affdfc https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0/get-user-introductions https://w3id.org/kpxl/grlc/sparql prefix np: <http://www.nanopub.org/nschema#> prefix npx: <http://purl.org/nanopub/x/> prefix npa: <http://purl.org/nanopub/admin/> prefix dct: <http://purl.org/dc/terms/> select (max(?date0) as ?date) (sample(str(?keyLocation)) as ?location) (group_concat(distinct ?keyAnnotated; separator=", ") as ?keys) ?np ("^" as ?np_label) (if(max(?isOwner) > 0 && max(?signedByLocal) > 0 && sum(?localDeclOk) > 0 && ?localCount > 1, str(?np), "") as ?retract_target) (if(max(?isOwner) > 0 && (max(?signedByLocal) = 0 || sum(?localDeclOk) = 0) && ?localCount = 0 && max(?lpkBound) > 0, str(?np), "") as ?derive_target) (if(max(?lpkBound) > 0 && max(?isLocal) = 0, str(?np), "") as ?approve_target) (sample(?lpk) as ?local_pubkey) (sample(?lpkShort) as ?local_pubkey_short) (sample(?siteUrl) as ?site_url) where { values ?__LOCALPUBKEY_multi {} values ?__SITEURL_multi {} values ?__CURRENTUSER_multi_iri {} graph npa:graph { ?np npa:hasValidSignatureForPublicKey ?introPubkey . filter not exists { ?npx npx:invalidates ?np ; npa:hasValidSignatureForPublicKey ?introPubkey . } ?np np:hasAssertion ?a . } optional { graph npa:graph { ?np dct:created ?date0 . } } graph ?a { ?keydeclaration npx:declaredBy ?_user_iri . ?keydeclaration npx:hasPublicKey ?pubkey . optional { ?keydeclaration npx:hasKeyLocation ?keyLocation . } bind(substr(sha256(?pubkey), 1, 10) as ?keyHash) bind(lcase(sha256(str(?pubkey))) as ?keyHashFull) } bind(if(exists { service <https://w3id.org/np/l/nanopub-query-1.1/repo/trust> { graph npa:graph { npa:thisRepo npa:hasCurrentTrustState ?tg . } graph ?tg { ?acct npa:agent ?_user_iri ; npa:pubkey ?keyHashFull ; npa:trustStatus npa:loaded . } } }, concat("✅ ", ?keyHash), concat("⚠️ ", ?keyHash)) as ?keyAnnotated) bind(coalesce(if(str(?pubkey) = str(?__LOCALPUBKEY_multi), 1, 0), 0) as ?isLocal) bind(if(?isLocal = 1 && (!bound(?keyLocation) || coalesce(str(?keyLocation) = str(?__SITEURL_multi), false) || coalesce(replace(str(?keyLocation), "nanobench", "nanodash") = str(?__SITEURL_multi), false)), 1, 0) as ?localDeclOk) bind(coalesce(if(str(?introPubkey) = str(?__LOCALPUBKEY_multi), 1, 0), 0) as ?signedByLocal) bind(if(bound(?__LOCALPUBKEY_multi), 1, 0) as ?lpkBound) bind(coalesce(if(?_user_iri = ?__CURRENTUSER_multi_iri, 1, 0), 0) as ?isOwner) bind(coalesce(str(?__LOCALPUBKEY_multi), "") as ?lpk) bind(if(strlen(?lpk) >= 45, concat(substr(?lpk, 1, 1), "..", substr(?lpk, 41, 5), ".."), "") as ?lpkShort) bind(coalesce(str(?__SITEURL_multi), "") as ?siteUrl) { select (count(distinct ?lnp) as ?localCount) where { values ?__LOCALPUBKEY_multi {} values ?__SITEURL_multi {} graph npa:graph { ?lnp npa:hasValidSignatureForPublicKey ?lsign . filter not exists { ?lnpx npx:invalidates ?lnp ; npa:hasValidSignatureForPublicKey ?lsign . } ?lnp np:hasAssertion ?la . } graph ?la { ?lkd npx:declaredBy ?_user_iri ; npx:hasPublicKey ?lpubkey . optional { ?lkd npx:hasKeyLocation ?lloc . } } filter(coalesce(str(?lsign) = str(?__LOCALPUBKEY_multi), false)) filter(coalesce(str(?lpubkey) = str(?__LOCALPUBKEY_multi), false)) filter(!bound(?lloc) || coalesce(str(?lloc) = str(?__SITEURL_multi), false) || coalesce(replace(str(?lloc), "nanobench", "nanodash") = str(?__SITEURL_multi), false)) } } } group by ?np ?localCount order by desc(max(?date0)) https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0/provenance https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0/assertion http://www.w3.org/ns/prov#wasAttributedTo https://orcid.org/0000-0002-1267-0234 https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0/pubinfo https://orcid.org/0000-0002-1267-0234 http://xmlns.com/foaf/0.1/name Tobias Kuhn https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0 http://purl.org/dc/terms/created 2026-11-10T07:13:16Z https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0 http://purl.org/dc/terms/creator https://orcid.org/0000-0002-1267-0234 https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0 http://purl.org/dc/terms/license https://creativecommons.org/licenses/by/4.0/ https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0 http://purl.org/nanopub/x/embeds https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0/get-user-introductions https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0 http://purl.org/nanopub/x/supersedes https://w3id.org/np/RAfboT7Bngk5M1pOdisJaBL2xOpfQ4flLKm2rz1iQ5E88 https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0 https://w3id.org/np/o/ntemplate/wasCreatedFromProvenanceTemplate https://w3id.org/np/RA7lSq6MuK_TIC6JMSHvLtee3lpLoZDOqLJCLXevnrPoU https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0 https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate https://w3id.org/np/RA0J4vUn_dekg-U1kK3AOEt02p9mT2WO03uGxLDec1jLw https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0 https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate https://w3id.org/np/RAoTD7udB2KtUuOuAe74tJi1t3VzK0DyWS7rYVAq1GRvw https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0 https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate https://w3id.org/np/RAukAcWHRDlkqxk7H2XNSegc1WnHI569INvNr-xdptDGI https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0 https://w3id.org/np/o/ntemplate/wasCreatedFromTemplate https://w3id.org/np/RAEFAt-QcFK0ZhqfvlsmS10BnzGJA0xwOICZXkO-ai87k https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0/sig http://purl.org/nanopub/x/hasAlgorithm RSA https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0/sig http://purl.org/nanopub/x/hasPublicKey MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0/sig http://purl.org/nanopub/x/hasSignature CGzrviLzf5NQ+BYVK/n9aGc18brSo50oeAs99dPRwiZ/2iAGMS9QHHRxnSQPi7l2CuxYPqQ0AAJPcfx6vUoUQoWX+sBzGZNd01YyMmAGq7Harazf8Yt0OaAQj6v2kECrjsBy1whBOecHUhI7O51lnzs2v3eC8XgjQnb9QdZrnkw= https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0/sig http://purl.org/nanopub/x/hasSignatureTarget https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0 https://w3id.org/np/RACBumBJqK_vrUJOoThSrAQOUJfUttQuWXbhoepWbTfe0/sig http://purl.org/nanopub/x/signedBy https://orcid.org/0000-0002-1267-0234