https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q/Head https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q http://www.nanopub.org/nschema#hasAssertion https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q/assertion https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q http://www.nanopub.org/nschema#hasProvenance https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q/provenance https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q http://www.nanopub.org/nschema#hasPublicationInfo https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q/pubinfo https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.nanopub.org/nschema#Nanopublication https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q/assertion https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q/get-event-participation-actions http://purl.org/dc/terms/description Backs a call-to-action panel on an event Space, inviting the visitor to declare how they take part. Returns one row per way in that is still open to this particular viewer: taking part (planned attendance before the event's start date, actual participation from the start date onwards) and observing. Observing is offered only to a viewer who has declared neither attendance nor participation - somebody who is coming is not also an observer. A row is returned only when the space actually offers that way in - that is, when a role carrying the corresponding property is attached to the space - and only when the viewer has not already declared it, read from the viewer's validated role instantiations via the CURRENTUSER session parameter. A logged-out visitor has no role instantiations, so they are offered everything the space offers. When nothing is left to offer, a single row with empty content is returned instead of no rows at all, so the panel renders blank rather than showing "(nothing found)". The content column holds ready-made root-relative /publish links with template-version=latest, which Nanodash renders as buttons; no title column is returned, so the rows carry no headings of their own and the panel's own title does the labelling. https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q/get-event-participation-actions http://purl.org/dc/terms/license http://www.apache.org/licenses/LICENSE-2.0 https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q/get-event-participation-actions http://www.w3.org/1999/02/22-rdf-syntax-ns#type https://w3id.org/kpxl/grlc/grlc-query https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q/get-event-participation-actions http://www.w3.org/2000/01/rdf-schema#label Get the ways in still open to the viewer of an event https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q/get-event-participation-actions https://w3id.org/kpxl/grlc/endpoint https://w3id.org/np/l/nanopub-query-1.1/repo/spaces https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q/get-event-participation-actions https://w3id.org/kpxl/grlc/sparql prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> prefix np: <http://www.nanopub.org/nschema#> prefix npa: <http://purl.org/nanopub/admin/> prefix npx: <http://purl.org/nanopub/x/> prefix gen: <https://w3id.org/kpxl/gen/terms/> prefix wd: <http://www.wikidata.org/entity/> prefix xsd: <http://www.w3.org/2001/XMLSchema#> select ?content where { values ?_space_multi_iri {} values ?__CURRENTUSER_multi_iri {} graph npa:graph { npa:thisRepo npa:hasCurrentSpaceState ?state . } # Has the event started? Read the start date off the space's current definition. optional { graph npa:graph { ?defNp npa:hasValidSignatureForPublicKeyHash ?defKey ; np:hasAssertion ?defA ; npx:introduces ?_space_multi_iri . filter not exists { ?defInv npx:invalidates ?defNp ; npa:hasValidSignatureForPublicKeyHash ?defKey . } filter not exists { ?defNewer npx:supersedes ?defNp . } } graph ?defA { ?_space_multi_iri <http://schema.org/startDate> ?startRaw . } } bind(coalesce(?startRaw, '9999-12-31T00:00:00Z'^^xsd:dateTime) as ?start) bind(now() >= ?start as ?started) # Which of the three ways in does this space actually offer? A role only takes # effect once it is attached to the space, so an unattached one is not offered. bind(exists { graph npa:graph { ?an1 npa:hasValidSignatureForPublicKeyHash ?ak1 ; np:hasAssertion ?aa1 . filter not exists { ?ai1 npx:invalidates ?an1 ; npa:hasValidSignatureForPublicKeyHash ?ak1 . } } graph ?aa1 { ?_space_multi_iri gen:hasRole ?role1 . } graph ?rd1 { ?role1 gen:hasRegularProperty gen:plansToAttend . } } as ?offersPlanned) bind(exists { graph npa:graph { ?an2 npa:hasValidSignatureForPublicKeyHash ?ak2 ; np:hasAssertion ?aa2 . filter not exists { ?ai2 npx:invalidates ?an2 ; npa:hasValidSignatureForPublicKeyHash ?ak2 . } } graph ?aa2 { ?_space_multi_iri gen:hasRole ?role2 . } graph ?rd2 { ?role2 gen:hasRegularProperty wd:P1344 . } } as ?offersParticipation) bind(exists { graph npa:graph { ?an3 npa:hasValidSignatureForPublicKeyHash ?ak3 ; np:hasAssertion ?aa3 . filter not exists { ?ai3 npx:invalidates ?an3 ; npa:hasValidSignatureForPublicKeyHash ?ak3 . } } graph ?aa3 { ?_space_multi_iri gen:hasRole ?role3 . } graph ?rd3 { ?role3 gen:hasInverseProperty gen:hasObserver . } } as ?offersObserver) # Which has the viewer already declared? With no viewer (logged out) the str() # comparison errors, the filter drops the row, and exists() is false - so a # logged-out visitor is offered everything the space offers. bind(exists { graph ?state { ?ri1 a gen:RoleInstantiation ; npa:forSpace ?_space_multi_iri ; npa:forAgent ?u1 ; npa:regularProperty gen:plansToAttend . } filter(str(?u1) = str(?__CURRENTUSER_multi_iri)) } as ?hasPlanned) bind(exists { graph ?state { ?ri2 a gen:RoleInstantiation ; npa:forSpace ?_space_multi_iri ; npa:forAgent ?u2 ; npa:regularProperty wd:P1344 . } filter(str(?u2) = str(?__CURRENTUSER_multi_iri)) } as ?hasParticipated) bind(exists { graph ?state { ?ri3 a gen:RoleInstantiation ; npa:forSpace ?_space_multi_iri ; npa:forAgent ?u3 ; npa:inverseProperty gen:hasObserver . } filter(str(?u3) = str(?__CURRENTUSER_multi_iri)) } as ?hasObserver) # One row per way in that is still open, plus a silent row so that a viewer who # has declared everything gets a blank panel rather than "(nothing found)". values (?slot ?sort) { ('take-part' 1) ('observe' 2) ('none' 3) } bind(if(?started, ?offersParticipation, ?offersPlanned) as ?takePartOffered) bind(if(?started, ?hasParticipated, ?hasPlanned) as ?takePartDone) bind(?takePartOffered && !?takePartDone as ?showTakePart) bind(?offersObserver && !?hasObserver && !?hasPlanned && !?hasParticipated as ?showObserve) filter(if(?slot = 'take-part', ?showTakePart, if(?slot = 'observe', ?showObserve, !?showTakePart && !?showObserve))) bind(concat('/publish?template-version=latest&param_space=', encode_for_uri(str(?_space_multi_iri)), '&template=') as ?tail) bind(if(?slot = 'take-part', if(?started, concat('<p>This event is under way. Put it on record that you are taking part — one nanopublication, retractable at any time.</p><p><a href="', ?tail, encode_for_uri('https://w3id.org/np/RAAcUy5wBwXNyadgD71k1rP0iM_KFc07qXFyrxhPcKS5M'), '">declare participation...</a></p>'), concat('<p>Planning to come? Saying so puts you on the list of expected participants — one nanopublication, retractable at any time.</p><p><a href="', ?tail, encode_for_uri('https://w3id.org/np/RAQ1LrU5fyY0Szd-4i9nN_JXBMvKti_v-GeHZgQG-EpzI'), '">declare planned attendance...</a></p>')), if(?slot = 'observe', concat('<p>Not coming, but want to follow what happens here?</p><p><a href="', ?tail, encode_for_uri('https://w3id.org/np/RAs3LMTf4JLXDUGCi1MjT2448aJQE3aatSgkapNwgdgHY'), '">observe...</a></p>'), '')) as ?content) } order by ?sort https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q/provenance https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q/assertion http://www.w3.org/ns/prov#wasAttributedTo https://orcid.org/0000-0002-1267-0234 https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q/pubinfo https://orcid.org/0000-0002-1267-0234 http://xmlns.com/foaf/0.1/name Tobias Kuhn https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q http://purl.org/dc/terms/created 2026-09-07T08:53:21Z https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q http://purl.org/dc/terms/creator https://orcid.org/0000-0002-1267-0234 https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q http://purl.org/dc/terms/license https://creativecommons.org/licenses/by/4.0/ https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q http://purl.org/nanopub/x/embeds https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q/get-event-participation-actions https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q http://purl.org/nanopub/x/supersedes https://w3id.org/np/RAnF7Dc2XfVY2gs2f4-WsjT20neMzDchON5ONmrUN8pzc https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q http://www.w3.org/2000/01/rdf-schema#label Get the ways in still open to the viewer of an event https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q https://w3id.org/np/o/ntemplate/wasCreatedFromProvenanceTemplate https://w3id.org/np/RA7lSq6MuK_TIC6JMSHvLtee3lpLoZDOqLJCLXevnrPoU https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate https://w3id.org/np/RA-N4_kFxcruvBTlo1yJv29E4SLOXsx5KO_th69PprMrA https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate https://w3id.org/np/RACJ58Gvyn91LqCKIO9zu1eijDQIeEff28iyDrJgjSJF8 https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate https://w3id.org/np/RARJj78P72NR5edKOnu_f4ePE9NYYuW2m2pM-fEoobMBk https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate https://w3id.org/np/RAoTD7udB2KtUuOuAe74tJi1t3VzK0DyWS7rYVAq1GRvw https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q https://w3id.org/np/o/ntemplate/wasCreatedFromTemplate https://w3id.org/np/RAEFAt-QcFK0ZhqfvlsmS10BnzGJA0xwOICZXkO-ai87k https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q/sig http://purl.org/nanopub/x/hasAlgorithm RSA https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q/sig http://purl.org/nanopub/x/hasPublicKey MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q/sig http://purl.org/nanopub/x/hasSignature coIzSXaw/gkpvJaS3Id/AP7yo4BXNe1MddovJGKYlwXidH4fvAbfVi7ZVG++B6yWo4di4FQVbtwvx0L4PUpyr1sLe8JdeOREFBxLQFpXKXPwmStFsM7MALdSZ4Ir4qsISindoz1EfuSzOYob7Zs9Tvdv4QApMjXzH1puZ1bsqbI= https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q/sig http://purl.org/nanopub/x/hasSignatureTarget https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q/sig http://purl.org/nanopub/x/signedBy https://orcid.org/0000-0002-1267-0234