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