Returns the concluded projects (defined as Spaces) that are sub-spaces of the given space, together with their project lead. A project counts as concluded when it has an end date that lies before today. A lead is only shown when it is a validated (top-down approved) holder of a project-lead role that is attached to that project at Member tier or above (observer-tier, self-attestable lead roles are excluded).
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> prefix dct: <http://purl.org/dc/terms/> prefix np: <http://www.nanopub.org/nschema#> prefix npa: <http://purl.org/nanopub/admin/> prefix npx: <http://purl.org/nanopub/x/> prefix gen: <https://w3id.org/kpxl/gen/terms/> prefix schema: <http://schema.org/> prefix foaf: <http://xmlns.com/foaf/0.1/> prefix xsd: <http://www.w3.org/2001/XMLSchema#> select distinct ?project ?project_label ?dates ?lead ?lead_label ?description ?np ("^" as ?np_label) where { graph npa:graph { ?np npa:hasValidSignatureForPublicKeyHash ?pubkey . filter not exists { ?npx npx:invalidates ?np ; npa:hasValidSignatureForPublicKeyHash ?pubkey . } filter not exists { ?np npx:hasNanopubType npx:ExampleNanopub . } ?np npx:introduces ?project . ?np np:hasAssertion ?a . ?np dct:created ?npDate . filter not exists { ?np2 npx:introduces ?project . ?np2 npa:hasValidSignatureForPublicKeyHash ?pubkey2 . filter not exists { ?npx2 npx:invalidates ?np2 ; npa:hasValidSignatureForPublicKeyHash ?pubkey2 . } ?np2 dct:created ?npDate2 . filter(?npDate2 > ?npDate) } } graph ?a { ?project a gen:Space . ?project a gen:Project . ?project rdfs:label ?project_label . optional { ?project dct:description ?description . } optional { ?project schema:startDate ?datetime . } ?project schema:endDate ?endDatetime . } service <https://w3id.org/np/l/nanopub-query-1.1/repo/spaces> { graph npa:graph { npa:thisRepo npa:hasCurrentSpaceState ?stateG . } graph ?stateG { ?_resource_iri npa:hasSubSpace ?project . } optional { graph npa:spacesGraph { ?riStem (npa:regularProperty|npa:inverseProperty) gen:hasProjectLead ; npa:forSpace ?project ; npa:forAgent ?lead . ?rd npa:role ?role ; (gen:hasRegularProperty|gen:hasInverseProperty) gen:hasProjectLead ; npa:hasRoleType ?roleType . filter(?roleType in (gen:MemberRole, gen:MaintainerRole, gen:AdminRole)) } graph ?stateG { ?ra a gen:RoleAssignment ; npa:forSpace ?project ; gen:hasRole ?role . ?riFull npa:forSpace ?project ; npa:forAgent ?lead . } filter(strstarts(str(?riFull), concat(str(?riStem), "__"))) optional { graph ?stateG { ?lead foaf:name ?lead_label } } } } bind(xsd:date(substr(str(?endDatetime), 1, 10)) as ?endDate) bind(xsd:date(substr(str(now()), 1, 10)) as ?today) filter(?endDate < ?today) bind(substr(str(?datetime), 1, 10) as ?startDay) bind(substr(str(?endDatetime), 1, 10) as ?endDay) bind(if(!bound(?datetime), ?endDay, if(?startDay = ?endDay, concat(?startDay, " ", substr(str(?datetime), 12, 5)), concat(?startDay, " – ", ?endDay))) as ?dates) } order by ?startDay