@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-agent-presentations a grlc:grlc-query; dct:description "Returns the presentations a given agent is recorded for, either as speaker (wd:P823) or as one of the authors (pav:authoredBy), with a role column saying which of the two it is. Conference programmes usually list authors and name a speaker only for invited talks, so imported programme presentations show up as author. The date is the start date (schema:startDate in either scheme) or else dct:date, and the event is the dct:isPartOf target. Newest first."; dct:license ; rdfs:label "Get the presentations of an agent"; grlc:endpoint ; grlc:sparql """prefix rdfs: prefix dct: prefix np: prefix npa: prefix npx: prefix wd: prefix pav: prefix schema: prefix schemaold: select ?presentation ?presentation_label ?role ?date ?event ?event_label ?np (\"^\" as ?np_label) where { { select ?np ?presentation ?role (sample(?plabel) as ?presentation_label) (min(?d) as ?date) (sample(?ev) as ?event) (sample(?evlabel) as ?event_label) where { graph ?a { ?presentation pav:authoredBy|wd:P823 ?_agent_iri . ?presentation a wd:Q604733 . } graph npa:graph { ?np np:hasAssertion ?a . ?np npx:introduces ?presentation . ?np np:hasPublicationInfo ?pi . ?np npa:hasValidSignatureForPublicKeyHash ?pubkey . filter not exists { ?npx npx:invalidates ?np ; npa:hasValidSignatureForPublicKeyHash ?pubkey . } filter not exists { ?np npx:hasNanopubType npx:ExampleNanopub . } } bind(if(exists { graph ?a { ?presentation wd:P823 ?_agent_iri } }, \"speaker\", \"author\") as ?role) optional { graph ?a { ?presentation rdfs:label ?plabel . } } optional { graph ?a { ?presentation schema:startDate ?startDateA . } } optional { graph ?a { ?presentation schemaold:startDate ?startDateB . } } optional { graph ?a { ?presentation dct:date ?olddate . } } bind(coalesce(str(?startDateA), str(?startDateB), str(?olddate)) as ?d) optional { graph ?a { ?presentation dct:isPartOf ?ev . } optional { graph ?a { ?ev rdfs:label ?evlabelA . } } optional { graph ?pi { ?ev rdfs:label ?evlabelB . } } } bind(coalesce(?evlabelA, ?evlabelB) as ?evlabel) } group by ?np ?presentation ?role } } order by desc(?date) ?presentation_label""" . } 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-11-11T18:25:51.934+01:00"^^xsd:dateTime; dct:creator orcid:0000-0002-1267-0234; dct:license ; npx:embeds sub:get-agent-presentations; npx:supersedes ; rdfs:label "Get the presentations of an agent"; nt:wasCreatedFromProvenanceTemplate ; nt:wasCreatedFromPubinfoTemplate , , , ; nt:wasCreatedFromTemplate . sub:sig npx:hasAlgorithm "RSA"; npx:hasPublicKey "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB"; npx:hasSignature "dv4QTabYbQXx+Lx/tBwohXyLCYsGhDGUib+l3ytI4gnWOexAJzJQ33oKNoZ2QY8Zhw4MbJLpq3gZnhv9ONw/bBQGLhRjfiHDDQVj7PqdOghN+B0uUOZ+E4rddQsLEOG8ezMpTWU3Kc9y3NVfHkkPqiJDN2XoDZRWMtQDxllDlM4="; npx:hasSignatureTarget this:; npx:signedBy orcid:0000-0002-1267-0234 . }