[ { "@id": "https://w3id.org/np/RAKKvoW87RRMfNEZF973EH-CGBDlESxze7TRd3CD_cUeI/assertion", "@graph": [ { "@id": "https://w3id.org/np/RAKKvoW87RRMfNEZF973EH-CGBDlESxze7TRd3CD_cUeI/get-feedback", "http://purl.org/dc/terms/description": [ { "@value": "Lists the feedback (instances of the Feedback class, published with the \"Giving feedback to organizers\" template) that is addressed to a given space or maintained resource, with its kind (went well / could be improved / suggestion for next time), most up-voted first, then oldest first. An up-vote is a schema:VoteAction (published with the \"Up-voting an idea or feedback\" template) whose schema:object is the feedback; the count is the number of distinct signing keys with a valid, non-retracted up-vote, so each person counts once and a retracted up-vote no longer counts. Example nanopublications and superseded or invalidated feedback are ignored. The hidden action columns are computed against the viewer's local key (?__LOCALPUBKEY_multi): upvote_target holds the feedback unless the viewer has already up-voted it, withdraw_target holds the viewer's own up-vote nanopublication (to retract it), and edit_target holds the feedback nanopublication if the viewer's key signed it (to supersede it)." } ], "http://purl.org/dc/terms/license": [ { "@id": "http://www.apache.org/licenses/LICENSE-2.0" } ], "@type": [ "https://w3id.org/kpxl/grlc/grlc-query" ], "http://www.w3.org/2000/01/rdf-schema#label": [ { "@value": "Get the feedback given to the organizers of a resource with up-votes" } ], "https://w3id.org/kpxl/grlc/endpoint": [ { "@id": "https://w3id.org/np/l/nanopub-query-1.1/repo/full" } ], "https://w3id.org/kpxl/grlc/sparql": [ { "@value": "prefix rdfs: \nprefix dct: \nprefix np: \nprefix npa: \nprefix npx: \nprefix gen: \nprefix schema: \nprefix foaf: \nprefix fb: \n\nselect ?kind ?feedback ?feedback_label ?details ?upvotes ?author ?author_label ?date ?np ?np_label ?upvote_target ?withdraw_target ?edit_target\nwhere {\n {\n select ?feedback ?np ?a ?pk ?created\n (min(str(?lbl)) as ?feedback_label) (sample(?desc) as ?details) (min(str(?k)) as ?kindS)\n (min(str(?auth)) as ?authS) (min(str(?aname)) as ?author_label)\n where {\n {\n select ?feedback ?np ?a ?pk ?created where {\n values ?_target_multi_iri {}\n graph ?a { ?feedback a fb:Feedback ; gen:isRelevantFor ?_target_multi_iri . }\n graph npa:graph {\n ?np np:hasAssertion ?a ; npa:hasValidSignatureForPublicKey ?pk ; npx:introduces ?feedback ; dct:created ?created .\n filter not exists { ?inv npx:invalidates ?np ; npa:hasValidSignatureForPublicKey ?pk . }\n filter not exists { ?newer npx:supersedes ?np . }\n filter not exists { ?np npx:hasNanopubType npx:ExampleNanopub . }\n }\n }\n }\n graph ?a { ?feedback rdfs:label ?lbl . }\n optional { graph ?a { ?feedback dct:type ?k . } }\n optional { graph ?a { ?feedback dct:description ?desc . } }\n graph npa:graph { ?np np:hasPublicationInfo ?pi . }\n optional { graph ?pi { ?np dct:creator ?auth . } }\n optional { graph ?pi { ?auth foaf:name ?aname . } }\n } group by ?feedback ?np ?a ?pk ?created\n }\n optional {\n select ?feedback (count(distinct ?vpk) as ?nvotes) where {\n graph ?va { ?vote a schema:VoteAction ; schema:object ?feedback . }\n graph npa:graph {\n ?vnp np:hasAssertion ?va ; npa:hasValidSignatureForPublicKey ?vpk .\n filter not exists { ?vinv npx:invalidates ?vnp ; npa:hasValidSignatureForPublicKey ?vpk . }\n filter not exists { ?vnp npx:hasNanopubType npx:ExampleNanopub . }\n }\n } group by ?feedback\n }\n optional {\n select ?feedback (max(str(?mvnp)) as ?myvote) where {\n values ?__LOCALPUBKEY_multi {}\n graph ?mva { ?mvote a schema:VoteAction ; schema:object ?feedback . }\n graph npa:graph {\n ?mvnp np:hasAssertion ?mva ; npa:hasValidSignatureForPublicKey ?mvpk .\n filter not exists { ?minv npx:invalidates ?mvnp ; npa:hasValidSignatureForPublicKey ?mvpk . }\n }\n filter(coalesce(str(?mvpk) = str(?__LOCALPUBKEY_multi), false))\n } group by ?feedback\n }\n values ?__LOCALPUBKEY_multi {}\n bind(if(?kindS = str(fb:WentWell), \"👍 went well\",\n if(?kindS = str(fb:ToImprove), \"🔧 could be improved\",\n if(?kindS = str(fb:SuggestionForNextTime), \"💡 suggestion for next time\", \"\"))) as ?kind)\n bind(coalesce(?nvotes, 0) as ?upvotes)\n bind(if(bound(?authS), iri(?authS), ?authS) as ?author)\n bind(substr(str(?created), 1, 10) as ?date)\n bind(\"^\" as ?np_label)\n bind(if(bound(?myvote), \"\", str(?feedback)) as ?upvote_target)\n bind(coalesce(?myvote, \"\") as ?withdraw_target)\n bind(if(coalesce(str(?pk) = str(?__LOCALPUBKEY_multi), false), str(?np), \"\") as ?edit_target)\n}\norder by desc(?upvotes) ?created" } ] } ] }, { "@id": "https://w3id.org/np/RAKKvoW87RRMfNEZF973EH-CGBDlESxze7TRd3CD_cUeI/Head", "@graph": [ { "@id": "https://w3id.org/np/RAKKvoW87RRMfNEZF973EH-CGBDlESxze7TRd3CD_cUeI", "http://www.nanopub.org/nschema#hasAssertion": [ { "@id": "https://w3id.org/np/RAKKvoW87RRMfNEZF973EH-CGBDlESxze7TRd3CD_cUeI/assertion" } ], "http://www.nanopub.org/nschema#hasProvenance": [ { "@id": "https://w3id.org/np/RAKKvoW87RRMfNEZF973EH-CGBDlESxze7TRd3CD_cUeI/provenance" } ], "http://www.nanopub.org/nschema#hasPublicationInfo": [ { "@id": "https://w3id.org/np/RAKKvoW87RRMfNEZF973EH-CGBDlESxze7TRd3CD_cUeI/pubinfo" } ], "@type": [ "http://www.nanopub.org/nschema#Nanopublication" ] } ] }, { "@id": "https://w3id.org/np/RAKKvoW87RRMfNEZF973EH-CGBDlESxze7TRd3CD_cUeI/pubinfo", "@graph": [ { "@id": "https://orcid.org/0000-0002-1267-0234", "http://xmlns.com/foaf/0.1/name": [ { "@value": "Tobias Kuhn" } ] }, { "@id": "https://w3id.org/np/RAKKvoW87RRMfNEZF973EH-CGBDlESxze7TRd3CD_cUeI", "http://purl.org/dc/terms/created": [ { "@value": "2026-09-15T08:47:33Z", "@type": "http://www.w3.org/2001/XMLSchema#dateTime" } ], "http://purl.org/dc/terms/creator": [ { "@id": "https://orcid.org/0000-0002-1267-0234" } ], "http://purl.org/dc/terms/license": [ { "@id": "https://creativecommons.org/licenses/by/4.0/" } ], "http://purl.org/nanopub/x/embeds": [ { "@id": "https://w3id.org/np/RAKKvoW87RRMfNEZF973EH-CGBDlESxze7TRd3CD_cUeI/get-feedback" } ], "http://www.w3.org/2000/01/rdf-schema#label": [ { "@value": "Get the feedback given to the organizers of a resource with up-votes" } ], "https://w3id.org/np/o/ntemplate/wasCreatedFromProvenanceTemplate": [ { "@id": "http://purl.org/np/RANwQa4ICWS5SOjw7gp99nBpXBasapwtZF1fIM3H2gYTM" } ], "https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate": [ { "@id": "https://w3id.org/np/RA-N4_kFxcruvBTlo1yJv29E4SLOXsx5KO_th69PprMrA" }, { "@id": "https://w3id.org/np/RACJ58Gvyn91LqCKIO9zu1eijDQIeEff28iyDrJgjSJF8" }, { "@id": "https://w3id.org/np/RARJj78P72NR5edKOnu_f4ePE9NYYuW2m2pM-fEoobMBk" } ], "https://w3id.org/np/o/ntemplate/wasCreatedFromTemplate": [ { "@id": "https://w3id.org/np/RAEFAt-QcFK0ZhqfvlsmS10BnzGJA0xwOICZXkO-ai87k" } ] }, { "@id": "https://w3id.org/np/RAKKvoW87RRMfNEZF973EH-CGBDlESxze7TRd3CD_cUeI/sig", "http://purl.org/nanopub/x/hasAlgorithm": [ { "@value": "RSA" } ], "http://purl.org/nanopub/x/hasPublicKey": [ { "@value": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB" } ], "http://purl.org/nanopub/x/hasSignature": [ { "@value": "LMpz4mOoEayx502fWFiHyatNUhpmSIBol9LcHhKWbap2UFzxfv8WugP/tJ8cFf0zShlDQal6Eaj7Qo1lYaZlniDDOIWWK/cFNw8B6MUdt3V/mM5rWmK+Z9AMT8BXR3bmNeWPK9cEA4FaTumkjgtowU8HWCBhz9hu3ViwEINNaDo=" } ], "http://purl.org/nanopub/x/hasSignatureTarget": [ { "@id": "https://w3id.org/np/RAKKvoW87RRMfNEZF973EH-CGBDlESxze7TRd3CD_cUeI" } ], "http://purl.org/nanopub/x/signedBy": [ { "@id": "https://orcid.org/0000-0002-1267-0234" } ] } ] }, { "@id": "https://w3id.org/np/RAKKvoW87RRMfNEZF973EH-CGBDlESxze7TRd3CD_cUeI/provenance", "@graph": [ { "@id": "https://w3id.org/np/RAKKvoW87RRMfNEZF973EH-CGBDlESxze7TRd3CD_cUeI/assertion", "http://www.w3.org/ns/prov#wasAttributedTo": [ { "@id": "https://orcid.org/0000-0002-1267-0234" } ] } ] } ]