rows { options { physical_type: PHYSICAL_STREAM_TYPE_QUADS max_name_table_size: 128 max_prefix_table_size: 16 max_datatype_table_size: 16 logical_type: LOGICAL_STREAM_TYPE_DATASETS version: 2 } } rows { prefix { value: "https://w3id.org/np/" } } rows { name { value: "RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q" } } rows { namespace { name: "this" value { prefix_id: 1 } } } rows { prefix { value: "https://w3id.org/np/RAUj8_Og_Ruj56tq4nlfo035q-HSvHBPC-UENDFlF3M8Q/" } } rows { name { } } rows { namespace { name: "sub" value { prefix_id: 2 } } } rows { prefix { value: "http://www.nanopub.org/nschema#" } } rows { namespace { name: "np" value { prefix_id: 3 name_id: 2 } } } rows { prefix { value: "https://w3id.org/kpxl/grlc/" } } rows { namespace { name: "grlc" value { prefix_id: 4 name_id: 2 } } } rows { prefix { value: "http://purl.org/dc/terms/" } } rows { namespace { name: "dct" value { prefix_id: 5 name_id: 2 } } } rows { prefix { value: "https://w3id.org/np/o/ntemplate/" } } rows { namespace { name: "nt" value { prefix_id: 6 name_id: 2 } } } rows { prefix { value: "http://purl.org/nanopub/x/" } } rows { namespace { name: "npx" value { prefix_id: 7 name_id: 2 } } } rows { prefix { value: "http://www.w3.org/2001/XMLSchema#" } } rows { namespace { name: "xsd" value { prefix_id: 8 name_id: 2 } } } rows { prefix { value: "http://www.w3.org/2000/01/rdf-schema#" } } rows { namespace { name: "rdfs" value { prefix_id: 9 name_id: 2 } } } rows { prefix { value: "https://orcid.org/" } } rows { namespace { name: "orcid" value { prefix_id: 10 name_id: 2 } } } rows { prefix { value: "http://www.w3.org/ns/prov#" } } rows { namespace { name: "prov" value { prefix_id: 11 name_id: 2 } } } rows { prefix { value: "http://xmlns.com/foaf/0.1/" } } rows { namespace { name: "foaf" value { prefix_id: 12 name_id: 2 } } } rows { name { value: "hasAssertion" } } rows { name { value: "assertion" } } rows { name { value: "Head" } } rows { quad { s_iri { prefix_id: 1 name_id: 1 } p_iri { prefix_id: 3 name_id: 3 } o_iri { prefix_id: 2 } g_iri { } } } rows { name { value: "hasProvenance" } } rows { name { value: "provenance" } } rows { quad { p_iri { prefix_id: 3 } o_iri { prefix_id: 2 } } } rows { name { value: "hasPublicationInfo" } } rows { name { value: "pubinfo" } } rows { quad { p_iri { prefix_id: 3 } o_iri { prefix_id: 2 } } } rows { prefix { value: "http://www.w3.org/1999/02/22-rdf-syntax-ns#" } } rows { name { value: "type" } } rows { name { value: "Nanopublication" } } rows { quad { p_iri { prefix_id: 13 } o_iri { prefix_id: 3 } } } rows { name { value: "get-event-participation-actions" } } rows { name { value: "description" } } rows { quad { s_iri { prefix_id: 2 } p_iri { prefix_id: 5 } o_literal { lex: "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." } g_iri { prefix_id: 2 name_id: 4 } } } rows { name { value: "license" } } rows { prefix { value: "http://www.apache.org/licenses/" } } rows { name { value: "LICENSE-2.0" } } rows { quad { p_iri { prefix_id: 5 name_id: 14 } o_iri { prefix_id: 14 } } } rows { name { value: "grlc-query" } } rows { quad { p_iri { prefix_id: 13 name_id: 10 } o_iri { prefix_id: 4 name_id: 16 } } } rows { name { value: "label" } } rows { quad { p_iri { prefix_id: 9 } o_literal { lex: "Get the ways in still open to the viewer of an event" } } } rows { name { value: "endpoint" } } rows { prefix { value: "https://w3id.org/np/l/nanopub-query-1.1/repo/" } } rows { name { value: "spaces" } } rows { quad { p_iri { prefix_id: 4 } o_iri { prefix_id: 15 } } } rows { name { value: "sparql" } } rows { quad { p_iri { prefix_id: 4 } o_literal { lex: "prefix rdfs: \nprefix np: \nprefix npa: \nprefix npx: \nprefix gen: \nprefix wd: \nprefix xsd: \n\nselect ?content where {\n values ?_space_multi_iri {}\n values ?__CURRENTUSER_multi_iri {}\n\n graph npa:graph { npa:thisRepo npa:hasCurrentSpaceState ?state . }\n\n # Has the event started? Read the start date off the space\'s current definition.\n optional {\n graph npa:graph {\n ?defNp npa:hasValidSignatureForPublicKeyHash ?defKey ;\n np:hasAssertion ?defA ;\n npx:introduces ?_space_multi_iri .\n filter not exists { ?defInv npx:invalidates ?defNp ; npa:hasValidSignatureForPublicKeyHash ?defKey . }\n filter not exists { ?defNewer npx:supersedes ?defNp . }\n }\n graph ?defA { ?_space_multi_iri ?startRaw . }\n }\n bind(coalesce(?startRaw, \'9999-12-31T00:00:00Z\'^^xsd:dateTime) as ?start)\n bind(now() >= ?start as ?started)\n\n # Which of the three ways in does this space actually offer? A role only takes\n # effect once it is attached to the space, so an unattached one is not offered.\n bind(exists {\n graph npa:graph { ?an1 npa:hasValidSignatureForPublicKeyHash ?ak1 ; np:hasAssertion ?aa1 .\n filter not exists { ?ai1 npx:invalidates ?an1 ; npa:hasValidSignatureForPublicKeyHash ?ak1 . } }\n graph ?aa1 { ?_space_multi_iri gen:hasRole ?role1 . }\n graph ?rd1 { ?role1 gen:hasRegularProperty gen:plansToAttend . }\n } as ?offersPlanned)\n bind(exists {\n graph npa:graph { ?an2 npa:hasValidSignatureForPublicKeyHash ?ak2 ; np:hasAssertion ?aa2 .\n filter not exists { ?ai2 npx:invalidates ?an2 ; npa:hasValidSignatureForPublicKeyHash ?ak2 . } }\n graph ?aa2 { ?_space_multi_iri gen:hasRole ?role2 . }\n graph ?rd2 { ?role2 gen:hasRegularProperty wd:P1344 . }\n } as ?offersParticipation)\n bind(exists {\n graph npa:graph { ?an3 npa:hasValidSignatureForPublicKeyHash ?ak3 ; np:hasAssertion ?aa3 .\n filter not exists { ?ai3 npx:invalidates ?an3 ; npa:hasValidSignatureForPublicKeyHash ?ak3 . } }\n graph ?aa3 { ?_space_multi_iri gen:hasRole ?role3 . }\n graph ?rd3 { ?role3 gen:hasInverseProperty gen:hasObserver . }\n } as ?offersObserver)\n\n # Which has the viewer already declared? With no viewer (logged out) the str()\n # comparison errors, the filter drops the row, and exists() is false - so a\n # logged-out visitor is offered everything the space offers.\n bind(exists {\n graph ?state { ?ri1 a gen:RoleInstantiation ; npa:forSpace ?_space_multi_iri ;\n npa:forAgent ?u1 ; npa:regularProperty gen:plansToAttend . }\n filter(str(?u1) = str(?__CURRENTUSER_multi_iri))\n } as ?hasPlanned)\n bind(exists {\n graph ?state { ?ri2 a gen:RoleInstantiation ; npa:forSpace ?_space_multi_iri ;\n npa:forAgent ?u2 ; npa:regularProperty wd:P1344 . }\n filter(str(?u2) = str(?__CURRENTUSER_multi_iri))\n } as ?hasParticipated)\n bind(exists {\n graph ?state { ?ri3 a gen:RoleInstantiation ; npa:forSpace ?_space_multi_iri ;\n npa:forAgent ?u3 ; npa:inverseProperty gen:hasObserver . }\n filter(str(?u3) = str(?__CURRENTUSER_multi_iri))\n } as ?hasObserver)\n\n # One row per way in that is still open, plus a silent row so that a viewer who\n # has declared everything gets a blank panel rather than \"(nothing found)\".\n values (?slot ?sort) { (\'take-part\' 1) (\'observe\' 2) (\'none\' 3) }\n bind(if(?started, ?offersParticipation, ?offersPlanned) as ?takePartOffered)\n bind(if(?started, ?hasParticipated, ?hasPlanned) as ?takePartDone)\n bind(?takePartOffered && !?takePartDone as ?showTakePart)\n bind(?offersObserver && !?hasObserver && !?hasPlanned && !?hasParticipated as ?showObserve)\n filter(if(?slot = \'take-part\', ?showTakePart,\n if(?slot = \'observe\', ?showObserve,\n !?showTakePart && !?showObserve)))\n\n bind(concat(\'/publish?template-version=latest¶m_space=\',\n encode_for_uri(str(?_space_multi_iri)), \'&template=\') as ?tail)\n bind(if(?slot = \'take-part\',\n if(?started,\n concat(\'

This event is under way. Put it on record that you are taking part \342\200\224 one nanopublication, retractable at any time.

declare participation...

\'),\n concat(\'

Planning to come? Saying so puts you on the list of expected participants \342\200\224 one nanopublication, retractable at any time.

declare planned attendance...

\')),\n if(?slot = \'observe\',\n concat(\'

Not coming, but want to follow what happens here?

observe...

\'),\n \'\')) as ?content)\n}\norder by ?sort" } } } rows { name { value: "wasAttributedTo" } } rows { name { value: "0000-0002-1267-0234" } } rows { quad { s_iri { prefix_id: 2 name_id: 4 } p_iri { prefix_id: 11 name_id: 21 } o_iri { prefix_id: 10 } g_iri { prefix_id: 2 name_id: 7 } } } rows { name { value: "name" } } rows { quad { s_iri { prefix_id: 10 name_id: 22 } p_iri { prefix_id: 12 } o_literal { lex: "Tobias Kuhn" } g_iri { prefix_id: 2 name_id: 9 } } } rows { name { value: "created" } } rows { datatype { value: "http://www.w3.org/2001/XMLSchema#dateTime" } } rows { quad { s_iri { prefix_id: 1 name_id: 1 } p_iri { prefix_id: 5 name_id: 24 } o_literal { lex: "2026-09-07T08:53:21Z" datatype: 1 } } } rows { name { value: "creator" } } rows { quad { p_iri { } o_iri { prefix_id: 10 name_id: 22 } } } rows { prefix { value: "https://creativecommons.org/licenses/by/4.0/" } } rows { quad { p_iri { prefix_id: 5 name_id: 14 } o_iri { prefix_id: 16 name_id: 2 } } } rows { name { value: "embeds" } } rows { quad { p_iri { prefix_id: 7 name_id: 26 } o_iri { prefix_id: 2 name_id: 12 } } } rows { name { value: "supersedes" } } rows { name { value: "RAnF7Dc2XfVY2gs2f4-WsjT20neMzDchON5ONmrUN8pzc" } } rows { quad { p_iri { prefix_id: 7 name_id: 27 } o_iri { prefix_id: 1 } } } rows { quad { p_iri { prefix_id: 9 name_id: 17 } o_literal { lex: "Get the ways in still open to the viewer of an event" } } } rows { name { value: "wasCreatedFromProvenanceTemplate" } } rows { name { value: "RA7lSq6MuK_TIC6JMSHvLtee3lpLoZDOqLJCLXevnrPoU" } } rows { quad { p_iri { prefix_id: 6 name_id: 29 } o_iri { prefix_id: 1 } } } rows { name { value: "wasCreatedFromPubinfoTemplate" } } rows { name { value: "RA-N4_kFxcruvBTlo1yJv29E4SLOXsx5KO_th69PprMrA" } } rows { quad { p_iri { prefix_id: 6 } o_iri { prefix_id: 1 } } } rows { name { value: "RACJ58Gvyn91LqCKIO9zu1eijDQIeEff28iyDrJgjSJF8" } } rows { quad { o_iri { } } } rows { name { value: "RARJj78P72NR5edKOnu_f4ePE9NYYuW2m2pM-fEoobMBk" } } rows { quad { o_iri { } } } rows { name { value: "RAoTD7udB2KtUuOuAe74tJi1t3VzK0DyWS7rYVAq1GRvw" } } rows { quad { o_iri { } } } rows { name { value: "wasCreatedFromTemplate" } } rows { name { value: "RAEFAt-QcFK0ZhqfvlsmS10BnzGJA0xwOICZXkO-ai87k" } } rows { quad { p_iri { prefix_id: 6 } o_iri { prefix_id: 1 } } } rows { name { value: "sig" } } rows { name { value: "hasAlgorithm" } } rows { quad { s_iri { prefix_id: 2 } p_iri { prefix_id: 7 } o_literal { lex: "RSA" } } } rows { name { value: "hasPublicKey" } } rows { quad { p_iri { } o_literal { lex: "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB" } } } rows { name { value: "hasSignature" } } rows { quad { p_iri { } o_literal { lex: "coIzSXaw/gkpvJaS3Id/AP7yo4BXNe1MddovJGKYlwXidH4fvAbfVi7ZVG++B6yWo4di4FQVbtwvx0L4PUpyr1sLe8JdeOREFBxLQFpXKXPwmStFsM7MALdSZ4Ir4qsISindoz1EfuSzOYob7Zs9Tvdv4QApMjXzH1puZ1bsqbI=" } } } rows { name { value: "hasSignatureTarget" } } rows { quad { p_iri { } o_iri { prefix_id: 1 name_id: 1 } } } rows { name { value: "signedBy" } } rows { quad { p_iri { prefix_id: 7 name_id: 43 } o_iri { prefix_id: 10 name_id: 22 } } }