def query_justification_lbl(uri): query = """ SELECT ?lbl WHERE { ?ms aida:cluster ?cluster ; aida:clusterMember/aida:justifiedBy/skos:prefLabel ?lbl . } GROUP BY ?lbl ORDER BY DESC(COUNT(?lbl)) LIMIT 1 """ for lbl, in sparql.query(query, namespaces, {'cluster': URIRef(uri)}): return lbl
def portfolios(): per_page = request.args.get('per_page', type=int, default=20) page = request.args.get('page', type=int, default=1) total = sparql.total_orgs() if total is None: return Response('data store is unreachable', status=500, mimetype='text/plain') pagination = Pagination(page=page, total=total, per_page=per_page, record_name='Portfolios') # translate pagination vars to query limit = pagination.per_page offset = (pagination.page - 1) * pagination.per_page # get list of org URIs and labels from the triplestore q = ''' PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX org: <http://www.w3.org/ns/org#> SELECT ?uri ?label WHERE {{ ?uri a <http://test.linked.data.gov.au/def/auorg#Portfolio> ; rdfs:label ?label . }} ORDER BY ?label LIMIT {} OFFSET {} '''.format(limit, offset) register = [] orgs = sparql.query(q)['results']['bindings'] for org in orgs: o = str(org['uri']['value']) l = str(org['label']['value']) register.append((o, l)) return RegisterRenderer( request, 'http://localhost:5000/portfolio/', 'Register of Portfolios', 'This contains all the Portfolios listed in directory.gov.au', register, ['http://test.linked.data.gov.au/def/auorg#Portfolio'], total, super_register='http://localhost:5000/reg/').render()
def organisations(): per_page = request.args.get('per_page', type=int, default=20) page = request.args.get('page', type=int, default=1) total = sparql.total_orgs() if total is None: return Response('data store is unreachable', status=500, mimetype='text/plain') # get list of org URIs and labels from the triplestore q = ''' PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX org: <http://www.w3.org/ns/org#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?uri ?label WHERE {{ ?uri a org:Organization ; rdfs:label ?label . MINUS {{ ?uri a <http://test.linked.data.gov.au/def/auorg#DirectorySubStructure> }} MINUS {{ ?uri a <http://test.linked.data.gov.au/def/auorg#DirectoryRole> }} MINUS {{ ?uri a foaf:Person }} }} ORDER BY ?label LIMIT {} OFFSET {} '''.format(per_page, (page - 1) * per_page) register = [] orgs = sparql.query(q)['results']['bindings'] for org in orgs: o = str(org['uri']['value']) l = str(org['label']['value']) register.append((o, l)) return RegisterRenderer( request, 'http://localhost:5000/org/', 'Register of Organisations', 'This contains all the different sorts of Organisations listed in directory.gov.au ' 'but not sub-organisational units', register, ['http://www.w3.org/ns/org#Organization'], total, super_register='http://localhost:5000/reg/').render()
def policies(): per_page = request.args.get('per_page', type=int, default=20) page = request.args.get('page', type=int, default=1) total = sparql.total_policies() if total is None: return Response('_data store is unreachable', status=500, mimetype='text/plain') # get list of org URIs and labels from the triplestore q = ''' PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX odrl: <http://www.w3.org/ns/odrl/2/> SELECT ?uri ?label WHERE {{ ?uri a odrl:Policy ; rdfs:label ?label . }} ORDER BY ?label LIMIT {} OFFSET {} '''.format(per_page, (page - 1) * per_page) register = [] orgs = sparql.query(q) for org in orgs: o = str(org['uri']['value']) l = str(org['label']['value']) register.append((o, l)) return RegisterRenderer( request, 'http://localhost:5000/policy/', 'Register of Policies', 'This contains all the items in this API, including general Policies, Licenses and so on.', register, [ 'http://www.w3.org/ns/odrl/2/Policy', 'http://creativecommons.org/ns#License' ], total, super_register='http://localhost:5000/reg/').render()
def __num_of_entities_by_type(type_, cluster=False): filter_ = '?cluster aida:prototype ?e' if cluster else 'FILTER NOT EXISTS { ?cluster aida:prototype ?e }' query = ''' SELECT ?cate (COUNT(?e) AS ?eN) WHERE { ?e a ?type . ?s rdf:subject ?e ; rdf:predicate rdf:type ; rdf:object ?cate . filter } GROUP BY ?cate '''.replace('?type', type_).replace('filter', filter_) d = {} for cate, count in sparql.query(query, namespaces): cate = cate.replace( 'https://tac.nist.gov/tracks/SM-KBP/2018/ontologies/SeedlingOntology#', '') d[cate] = int(count) return d
def organizations(**args): """A Register of org:Organizations :param args: supplied by decorator :return: a Flask HTTP Response """ r = RegisterRenderer(request, 'http://www.w3.org/ns/org#Organization', 'http://localhost:5000/org/', description=args.get('description')) # translate pagination vars to query limit = r.per_page offset = (r.page - 1) * r.per_page # get list of org URIs and labels from the triplestore q = ''' PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX org: <http://www.w3.org/ns/org#> SELECT ?uri ?label WHERE {{ ?uri a <http://www.w3.org/ns/org#Organization> ; rdfs:label ?label . MINUS {{ ?uri a <http://test.linked.data.gov.au/def/auorg#DirectorySubStructure> }} }} ORDER BY ?label LIMIT {} OFFSET {} '''.format(limit, offset) r.register = [] orgs = sparql.query(q)['results']['bindings'] for org in orgs: o = str(org['uri']['value']) l = str(org['label']['value']) r.register.append((o, l)) # render response according to view and format parameters view = args.get('view') format = args.get('format') return r.render(view, format)
def actions(): per_page = request.args.get('per_page', type=int, default=20) page = request.args.get('page', type=int, default=1) total = sparql.total_actions() if total is None: return Response('_data store is unreachable', status=500, mimetype='text/plain') # get list of Action URIs and labels from the triplestore, paginating q = ''' PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX odrl: <http://www.w3.org/ns/odrl/2/> SELECT * WHERE {{ ?uri a odrl:Action ; rdfs:label ?label . }} ORDER BY ?label LIMIT {} OFFSET {} '''.format(per_page, (page - 1) * per_page) actions = sparql.query(q) register = [] for action in actions: o = str(action['uri']['value']) l = str(action['label']['value']) register.append((o, l)) return RegisterRenderer( request, 'http://localhost:5000/action/', 'Register of Actions', 'This register contains ODRL Actions.', register, ['http://www.w3.org/ns/odrl/2/'], total, super_register='http://localhost:5000/reg/', ).render()
def boards(): per_page = request.args.get('per_page', type=int, default=20) page = request.args.get('page', type=int, default=1) total = sparql.total_orgs() if total is None: return Response('data store is unreachable', status=500, mimetype='text/plain') # get list of org URIs and labels from the triplestore q = ''' PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX auorg: <http://test.linked.data.gov.au/def/auorg#> SELECT ?uri ?label WHERE {{ ?uri a auorg:Board ; rdfs:label ?label . }} ORDER BY ?label LIMIT {} OFFSET {} '''.format(per_page, (page - 1) * per_page) register = [] orgs = sparql.query(q)['results']['bindings'] for org in orgs: o = str(org['uri']['value']) l = str(org['label']['value']) register.append((o, l)) return RegisterRenderer( request, 'http://localhost:5000/board/', 'Register of Boards', 'This contains all the Boards listed in directory.gov.au', register, ['http://test.linked.data.gov.au/def/auorg#Board'], total, super_register='http://localhost:5000/reg/').render()
def licenses(): per_page = request.args.get('per_page', type=int, default=20) page = request.args.get('page', type=int, default=1) total = sparql.total_licenses() if total is None: return Response('_data store is unreachable', status=500, mimetype='text/plain') # get list of org URIs and labels from the triplestore q = ''' PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX cc: <http://creativecommons.org/ns#> SELECT ?uri ?label WHERE {{ ?uri a cc:License ; rdfs:label ?label . }} ORDER BY ?label LIMIT {} OFFSET {} '''.format(per_page, (page - 1) * per_page) register = [] vocabs = sparql.query(q) for vocab in vocabs: o = str(vocab['uri']['value']) l = str(vocab['label']['value']) register.append((o, l)) return RegisterRenderer( request, 'http://localhost:5000/license/', 'Register of Licenses', 'This register contains Licenses.', register, ['http://creativecommons.org/ns#License'], total, super_register='http://localhost:5000/reg/').render()
def count_query(query): for count, in sparql.query(query, namespaces): return int(count)
from model import sparql, namespaces, AIDA from rdflib.namespace import split_uri from collections import defaultdict import pickle data = defaultdict(dict) query = """ SELECT ?cluster (COUNT(?member) AS ?size) WHERE { ?membership aida:cluster ?cluster ; aida:clusterMember ?member . } GROUP BY ?cluster """ for cluster, size in sparql.query(query, namespaces): cluster = str(cluster) data[cluster]['size'] = int(size) # Entity query = """ SELECT ?cluster ?label ?category WHERE { ?cluster aida:prototype ?prototype . ?prototype a aida:Entity . OPTIONAL { ?prototype aida:hasName ?label } ?statement rdf:subject ?prototype ; rdf:predicate rdf:type ; rdf:object ?category . } """ for cluster, label, type_ in sparql.query(query, namespaces):