@prefix this: . @prefix sub: . @prefix np: . @prefix grlc: . @prefix dct: . @prefix nt: . @prefix npx: . @prefix xsd: . @prefix rdfs: . @prefix orcid: . @prefix prov: . @prefix foaf: . sub:Head { this: a np:Nanopublication; np:hasAssertion sub:assertion; np:hasProvenance sub:provenance; np:hasPublicationInfo sub:pubinfo . } sub:assertion { sub:get-openaire-supplement-links a grlc:grlc-query; dct:description "Returns the contributed links stating that a publication is supplemented by a dataset, with labels and contributor, excluding retracted or superseded nanopublications (example nanopublications are included, marked in the flags column). The status column links the latest valid approval or disapproval by a member of the given space."; dct:license ; rdfs:label "Get OpenAIRE supplement links"; grlc:endpoint ; grlc:sparql """prefix np: prefix npa: prefix npx: prefix nt: prefix dct: prefix foaf: prefix owl: prefix rdfs: prefix cito: prefix frbr: prefix skos: prefix frapo: prefix prov: prefix gen: prefix xsd: select ?publication ?publication_label ?dataset ?dataset_label ?flags ?creator ?creator_label ?date ?action_target ?np ?np_label ?status ?status_label where { { select ?publication ?publication_label ?dataset ?dataset_label (if(?isExample, \"example\", \"\") as ?flags) ?creator ?creator_label ?date (?np as ?action_target) ?np (\"^\" as ?np_label) (max(if(contains(?memberPubkeys, ?vKey), ?vTag, \"\")) as ?latestTag) where { values ?_space_multi_iri {} service { select (group_concat(?mpk; separator=\" \") as ?memberPubkeys) where { graph npa:graph { npa:hasCurrentSpaceState ?stateG . } values ?_space_multi_iri {} graph ?stateG { ?ri a gen:RoleInstantiation ; npa:forSpace ?_space_multi_iri ; npa:forAgent ?agent ; npa:hasRoleType ?roleType . filter(?roleType in (gen:AdminRole, gen:MaintainerRole, gen:MemberRole)) ?acct a npa:AccountState ; npa:agent ?agent ; npa:pubkey ?mpk . } } } graph npa:graph { ?np npa:hasValidSignatureForPublicKeyHash ?pk . filter not exists { ?inp npx:invalidates ?np ; npa:hasValidSignatureForPublicKeyHash ?pk . } filter not exists { ?sup npx:supersedes ?np . } ?np dct:created ?date . ?np np:hasAssertion ?a . ?np np:hasPublicationInfo ?pi . } graph ?a { ?publication frbr:supplement ?dataset . } filter( ( strstarts(str(?publication), \"https://doi.org/\") || strstarts(str(?publication), \"https://api.openaire.eu/\") ) && ( strstarts(str(?dataset), \"https://doi.org/\") || strstarts(str(?dataset), \"https://api.openaire.eu/\") ) ) optional { graph ?pi { ?publication nt:hasLabelFromApi ?publication_label . } } optional { graph ?pi { ?dataset nt:hasLabelFromApi ?dataset_label . } } optional { graph npa:graph { ?np dct:creator ?creator . } } optional { graph ?pi { ?creator foaf:name ?creator_label . } } bind(exists { graph npa:graph { ?np npx:hasNanopubType npx:ExampleNanopub . } } as ?isExample) optional { { select (?vTarget as ?np) ?vKey ?vTag where { { service { graph npa:graph { ?vnp npa:hasValidSignatureForPublicKeyHash ?vKey . filter not exists { ?vinp npx:invalidates ?vnp ; npa:hasValidSignatureForPublicKeyHash ?vKey . } filter not exists { ?vsup npx:supersedes ?vnp . } ?vnp dct:created ?vDate . ?vnp np:hasAssertion ?va . ?vnp np:hasPublicationInfo ?vpi . } graph ?va { ?vagent npx:approvesOf ?vTarget . } optional { graph ?vpi { ?vagent foaf:name ?vName . } } bind(concat(str(?vDate), \">approved|\", coalesce(?vName, str(?vagent)), \"|\", str(?vnp)) as ?vTag) } } union { service { graph npa:graph { ?vnp npa:hasValidSignatureForPublicKeyHash ?vKey . filter not exists { ?vinp npx:invalidates ?vnp ; npa:hasValidSignatureForPublicKeyHash ?vKey . } filter not exists { ?vsup npx:supersedes ?vnp . } ?vnp dct:created ?vDate . ?vnp np:hasAssertion ?va . ?vnp np:hasPublicationInfo ?vpi . } graph ?va { ?vagent npx:disapprovesOf ?vTarget . } optional { graph ?vpi { ?vagent foaf:name ?vName . } } bind(concat(str(?vDate), \">disapproved|\", coalesce(?vName, str(?vagent)), \"|\", str(?vnp)) as ?vTag) } } } } } } group by ?publication ?publication_label ?dataset ?dataset_label ?creator ?creator_label ?date ?np ?isExample ?memberPubkeys } bind(coalesce(?latestTag, \"\") as ?lt) bind(strbefore(strafter(?lt, \">\"), \"|\") as ?verdict) bind(strafter(?lt, \"|\") as ?vrest) bind(strbefore(?vrest, \"|\") as ?vname) bind(iri(strafter(?vrest, \"|\")) as ?status) bind(xsd:dateTime(strbefore(?lt, \">\")) as ?vdt) bind((year(now())*525600 + month(now())*43800 + day(now())*1440 + hours(now())*60 + minutes(now())) - (year(?vdt)*525600 + month(?vdt)*43800 + day(?vdt)*1440 + hours(?vdt)*60 + minutes(?vdt)) as ?minsAgo) bind(coalesce(if(?minsAgo < 1, \"just now\", if(?minsAgo < 60, concat(str(?minsAgo), if(?minsAgo = 1, \" minute ago\", \" minutes ago\")), if(?minsAgo < 1440, concat(str(xsd:integer(floor(?minsAgo / 60))), if(xsd:integer(floor(?minsAgo / 60)) = 1, \" hour ago\", \" hours ago\")), concat(str(xsd:integer(floor(?minsAgo / 1440))), if(xsd:integer(floor(?minsAgo / 1440)) = 1, \" day ago\", \" days ago\"))))), \"\") as ?ago) bind(coalesce(if(?lt != \"\", concat(?verdict, \" by \", ?vname, \" \", ?ago), \"\"), \"\") as ?status_label) } order by desc(?date)""" . } sub:provenance { sub:assertion prov:wasAttributedTo orcid:0000-0002-1267-0234 . } sub:pubinfo { orcid:0000-0002-1267-0234 foaf:name "Tobias Kuhn" . this: dct:created "2026-07-29T17:53:26Z"^^xsd:dateTime; dct:creator orcid:0000-0002-1267-0234; dct:license ; npx:embeds sub:get-openaire-supplement-links; npx:supersedes ; rdfs:label "Get OpenAIRE supplement links"; nt:wasCreatedFromProvenanceTemplate ; nt:wasCreatedFromPubinfoTemplate , , , ; nt:wasCreatedFromTemplate . sub:sig npx:hasAlgorithm "RSA"; npx:hasPublicKey "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB"; npx:hasSignature "I1iaPrLhTyh8Y5TF/soGZAvGU+KPHmSTZvlX2xs9uL/jmI7cBf9Xew7znIVGPYg9mmzNALODJ930QJS/+Z6sNcJrVS0aRRft8IhkbgwVvr+MMRkbd2I2Kwe+2YcuLP3CJLXXYZ8gq3DJs7pnNcYmfkf0nrU/vQ3v0smneYmYszY="; npx:hasSignatureTarget this:; npx:signedBy orcid:0000-0002-1267-0234 . }