sub:assertion {
sub:get-spaces-and-roles-for-user dct:description "Returns all the spaces a given user belongs to, together with the role names the user has in each space." ;
dct:license <
http://www.apache.org/licenses/LICENSE-2.0> ;
a <
https://w3id.org/kpxl/grlc/grlc-query> ;
rdfs:label "Get Spaces and roles for user" ;
<
https://w3id.org/kpxl/grlc/endpoint> <
https://w3id.org/np/l/nanopub-query-1.1/repo/full> ;
<
https://w3id.org/kpxl/grlc/sparql> """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/>
select ?space ?space_label (group_concat(distinct str(?role); separator=\" \") as ?roles_multi_iri) (group_concat(distinct ?roleName; separator=\"\\n\") as ?roles_label_multi) where {
{
{
graph npa:graph {
?spaceRole_np npx:hasNanopubType gen:SpaceMemberRole .
?spaceRole_np npa:hasValidSignatureForPublicKeyHash ?spaceRole_pubkey .
filter not exists { ?spaceRole_npx npx:invalidates ?spaceRole_np ; npa:hasValidSignatureForPublicKeyHash ?spaceRole_pubkey . }
?spaceRole_np np:hasAssertion ?spaceRole_a .
}
graph ?spaceRole_a {
?space gen:hasRole ?role .
}
} union {
bind(<https://w3id.org/np/RA_eEJjQbxzSqYSwPzfjzOZi5sMPpUmHskFNsgJYSws8I/adminRole> as ?role)
}
}
graph ?role_a {
?role a gen:SpaceMemberRole .
?role rdfs:label ?roleLabel .
?role dct:title ?roleTitle .
?role schema:name ?roleName .
}
graph npa:graph {
?role_np npx:embeds ?role .
?role_np np:hasAssertion ?role_a .
}
{
{
graph ?role_a {
?role gen:hasRegularProperty ?reg .
}
graph ?link_a {
?_agent_iri ?reg ?space .
}
} union {
graph ?role_a {
?role gen:hasInverseProperty ?inv .
}
graph ?link_a {
?space ?inv ?_agent_iri .
}
}
}
graph npa:graph {
?link_np np:hasAssertion ?link_a .
?link_np npa:hasValidSignatureForPublicKeyHash ?link_pubkey .
filter not exists { ?link_npx npx:invalidates ?link_np ; npa:hasValidSignatureForPublicKeyHash ?link_pubkey . }
}
optional {
graph npa:graph {
?space_np npx:introduces ?space .
?space_np npa:hasValidSignatureForPublicKeyHash ?space_pubkey .
filter not exists { ?space_npx npx:invalidates ?space_np ; npa:hasValidSignatureForPublicKeyHash ?space_pubkey . }
?space_np rdfs:label ?space_label .
}
}
}
group by ?space ?space_label
order by ?space_label""" .
}