. . . . "Returns the career history of a given person as a single timeline: positions held and academic degrees awarded, interleaved by year. The entryKind column says which of the two a row is. Positions carry a start year and, unless still held, an end year; degrees carry the year they were conferred as the start year. This query runs against the full repository rather than a type-specific one because it spans two types." . . . "Get CV entries for person" . . "prefix rdfs: \nprefix dct: \nprefix np: \nprefix npa: \nprefix npx: \nprefix wd: \nprefix vivo: \n\nselect ?entry ?entry_label ?entryKind ?organization ?organization_label ?unit ?startYear ?endYear ?np (\"^\" as ?np_label) where {\n graph npa:graph {\n ?np npa:hasValidSignatureForPublicKeyHash ?pubkey .\n filter not exists { ?npx npx:invalidates ?np ; npa:hasValidSignatureForPublicKeyHash ?pubkey . }\n filter not exists { ?np npx:hasNanopubType npx:ExampleNanopub . }\n ?np np:hasAssertion ?a .\n ?np np:hasPublicationInfo ?pi .\n ?np npx:introduces ?entry .\n }\n {\n # A position: held from a start year, open-ended while still held.\n graph ?a {\n ?entry a vivo:Position .\n ?_person_iri wd:P39 ?entry .\n optional { ?entry wd:P108 ?organization . }\n optional { ?entry wd:P580 ?startYear . }\n optional { ?entry wd:P582 ?endYear . }\n }\n bind(\"position\" as ?entryKind)\n } union {\n # A degree: conferred in one year, which becomes the start year so that both\n # kinds sort on the same axis.\n graph ?a {\n ?entry a vivo:AwardedDegree .\n ?_person_iri wd:P512 ?entry .\n optional { ?entry wd:P69 ?organization . }\n optional { ?entry dct:issued ?startYear . }\n }\n bind(\"degree\" as ?entryKind)\n }\n optional { graph ?a { ?entry rdfs:label ?entry_label . } }\n optional { graph ?a { ?entry dct:description ?unit . } }\n # Organization labels live in pubinfo. OPTIONAL wraps GRAPH, never the reverse.\n optional { graph ?pi { ?organization rdfs:label ?organization_label . } }\n} order by desc(?startYear) desc(?endYear)" . . "Tobias Kuhn" . "2026-08-28T17:52:14Z"^^ . . . . "Get CV entries for person" . . . . . . "RSA" . "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB" . "P9iKZhORQHFr0LfrJF5LaygxbvxIG+c1tBbHmvDfEHxSQz7pd88+2SUMQ53AsT+6Dx7c0YA/8q60VJDb7ng+1EeTS0PwJW7NBobBiRi6Bk53pkyYOiXb3kZ507L4UvzHQNUK9Xw2aFY9HQM/kli+clB1cS+WMlGij0grAaQxfTo=" . . .