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
示例#2
0
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()
示例#3
0
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()
示例#4
0
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()
示例#5
0
 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
示例#6
0
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)
示例#7
0
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()
示例#8
0
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()
示例#9
0
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()
示例#10
0
def count_query(query):
    for count, in sparql.query(query, namespaces):
        return int(count)
示例#11
0
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):