@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-publication-details a grlc:grlc-query; dct:description "Given a publication (identified by its DOI URI or other identifier), this query returns its details as property-value rows: its bibliographic metadata (type, title, authors in list order, journal, date, volume, pages) from the nanopublication introducing it, the resources citing it via CiTO relations (with the citation type in the property label), and the statements (AIDA sentences) that were derived from it. Recognized properties get human-readable labels and are shown first."; dct:license ; rdfs:label "Get publication details"; grlc:endpoint ; grlc:sparql """prefix rdf: prefix rdfs: prefix xsd: prefix dct: prefix np: prefix npa: prefix npx: prefix bibo: prefix foaf: prefix prov: prefix hycl: select ?property ?property_label ?value (min(?vlabel) as ?value_label) where { { graph npa:graph { ?np npx:introduces ?_publication_iri ; np:hasAssertion ?a ; npa:hasValidSignatureForPublicKey ?pk . } filter not exists { graph npa:graph { ?inv npx:invalidates ?np ; npa:hasValidSignatureForPublicKey ?pk . } } { graph ?a { ?_publication_iri ?property ?value . } filter(?property not in (dct:isPartOf, bibo:authorList, bibo:pageStart, bibo:pageEnd)) bind(if(?property = rdf:type, replace(replace(str(?value), \"^.*[/#]\", \"\"), \"([a-z])([A-Z])\", \"$1 $2\"), ?xu) as ?vlabel) bind( if(?property = rdf:type, \"Type\", if(?property = dct:title, \"Title\", if(?property = dct:date, \"Date\", if(?property = bibo:volume, \"Volume\", str(?property))))) as ?property_label) bind( if(?property = rdf:type, 0, if(?property = dct:title, 1, if(?property = dct:date, 30, if(?property = bibo:volume, 32, 40)))) as ?sort) } union { graph ?a { ?_publication_iri dct:isPartOf ?j . ?j dct:title ?value . } bind(dct:isPartOf as ?property) bind(\"Published in\" as ?property_label) bind(31 as ?sort) } union { graph ?a { ?_publication_iri bibo:pageStart ?ps . } optional { graph ?a { ?_publication_iri bibo:pageEnd ?pe . } } bind(bibo:pageStart as ?property) bind(\"Pages\" as ?property_label) bind(33 as ?sort) bind(if(bound(?pe) && str(?pe) != str(?ps), concat(str(?ps), \"-\", str(?pe)), str(?ps)) as ?value) } union { graph ?a { ?_publication_iri bibo:authorList ?al . ?al ?m ?author . ?author foaf:name ?value . } filter(strstarts(str(?m), \"http://www.w3.org/1999/02/22-rdf-syntax-ns#_\")) bind(bibo:authorList as ?property) bind(\"Author\" as ?property_label) bind(10 + xsd:integer(strafter(str(?m), \"#_\")) / 1000.0 as ?sort) } } union { graph npa:graph { ?cnp np:hasAssertion ?ca ; npa:hasValidSignatureForPublicKey ?cpk . } filter not exists { graph npa:graph { ?cinv npx:invalidates ?cnp ; npa:hasValidSignatureForPublicKey ?cpk . } } graph ?ca { ?value ?property ?_publication_iri . } filter(strstarts(str(?property), \"http://purl.org/spar/cito/\")) bind(concat(\"Cited by (\", lcase(replace(replace(str(?property), \"http://purl.org/spar/cito/\", \"\"), \"([a-z])([A-Z])\", \"$1 $2\")), \")\") as ?property_label) bind(50 as ?sort) optional { graph npa:graph { ?lnp np:hasAssertion ?la ; npa:hasValidSignatureForPublicKey ?lpk . } filter not exists { graph npa:graph { ?linv npx:invalidates ?lnp ; npa:hasValidSignatureForPublicKey ?lpk . } } graph ?la { ?value rdfs:label ?vlabel . } } } union { graph npa:graph { ?snp np:hasAssertion ?sa ; npa:hasValidSignatureForPublicKey ?spk . } filter not exists { graph npa:graph { ?sinv npx:invalidates ?snp ; npa:hasValidSignatureForPublicKey ?spk . } } graph ?sa { ?value prov:wasDerivedFrom ?_publication_iri . ?value a hycl:AIDA-Sentence . } bind(prov:wasDerivedFrom as ?property) bind(\"Basis for statement\" as ?property_label) bind(60 as ?sort) optional { graph npa:graph { ?snp rdfs:label ?vlabel . } } } } group by ?property ?property_label ?value ?sort order by ?sort str(?value)""" . } 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-06T14:36:37Z"^^xsd:dateTime; dct:creator orcid:0000-0002-1267-0234; dct:license ; npx:embeds sub:get-publication-details; rdfs:label "Get publication details"; nt:wasCreatedFromProvenanceTemplate ; nt:wasCreatedFromPubinfoTemplate , ; nt:wasCreatedFromTemplate . sub:sig npx:hasAlgorithm "RSA"; npx:hasPublicKey "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB"; npx:hasSignature "em4h2FdUvlBRObrzMsiKezarCOxCwjEf/mrLqz41T4Ak7orOQ5laWA5G/SxveLfDlDgVMXgH5co/wtZpjxQVSUYzTrBw1v1r7ecoBSbTEnKEJlv+4NXv51cpY0WiAofVTuzmOasWYkKVwZAh71npjkIrtG0Xk+lk2RZhO3Y6KDs="; npx:hasSignatureTarget this:; npx:signedBy orcid:0000-0002-1267-0234 . }