コード例 #1
0
ファイル: xref_api.py プロジェクト: sam-heller/aleph
def index(collection_id):
    """
    ---
    get:
      summary: Fetch cross-reference results
      description: >-
        Fetch cross-reference matches for entities in the collection
        with id `collection_id`
      parameters:
      - in: path
        name: collection_id
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                allOf:
                - $ref: '#/components/schemas/QueryResponse'
                properties:
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/XrefResponse'
      tags:
      - Xref
      - Collection
    """
    get_index_collection(collection_id)
    result = XrefQuery.handle(request, collection_id=collection_id)
    return XrefSerializer.jsonify_result(result)
コード例 #2
0
def index(collection_id):
    """
    ---
    get:
      summary: Fetch cross-reference results
      description: >-
        Fetch cross-reference matches for entities in the collection
        with id `collection_id`
      parameters:
      - in: path
        name: collection_id
        required: true
        schema:
          type: integer
      - in: query
        name: evaluation_mode
        required: false
        schema:
          type: bool
          default: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                allOf:
                - $ref: '#/components/schemas/QueryResponse'
                properties:
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/XrefResponse'
      tags:
      - Xref
      - Collection
    """
    get_index_collection(collection_id, request.authz.READ)
    result = XrefQuery.handle(request, collection_id=collection_id)
    pairs = []
    for xref in result.results:
        pairs.append((xref.get("entity_id"), xref.get("match_id")))
    judgements = pairwise_judgements(pairs, collection_id)
    for xref in result.results:
        key = (xref.get("entity_id"), xref.get("match_id"))
        xref["judgement"] = judgements.get(key)
    return XrefSerializer.jsonify_result(result)
コード例 #3
0
ファイル: reconcile_api.py プロジェクト: wdsn/aleph
def reconcile(collection_id=None):
    """Reconciliation API, emulates Google Refine API."""
    collection = None
    if collection_id is not None:
        collection = get_index_collection(collection_id)
    query = request.values.get('query')
    if query is not None:
        # single
        try:
            query = json.loads(query)
        except ValueError:
            query = {'query': query}
        return jsonify(reconcile_op(query, collection))

    queries = request.values.get('queries')
    if queries is not None:
        # multiple requests in one query
        try:
            qs = json.loads(queries)
            results = {}
            for k, q in qs.items():
                results[k] = reconcile_op(q, collection)
            return jsonify(results)
        except ValueError:
            raise BadRequest()
    return reconcile_index(collection)
コード例 #4
0
def view(collection_id):
    """
    ---
    get:
      summary: Get a collection
      description: Return the collection with id `collection_id`
      parameters:
      - description: The collection ID.
        in: path
        name: collection_id
        required: true
        schema:
          minimum: 1
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionFull'
      tags:
      - Collection
    """
    data = get_index_collection(collection_id)
    cobj = get_db_collection(collection_id)
    if get_flag("refresh", False):
        update_collection_stats(collection_id, ["schema"])
    data.update({
        "statistics": get_collection_stats(cobj.id),
        "status": get_status(cobj),
        "shallow": False,
    })
    return CollectionSerializer.jsonify(data)
コード例 #5
0
ファイル: collections_api.py プロジェクト: we1l1n/aleph
def view(collection_id):
    """
    ---
    get:
      summary: Get a collection
      description: Return the collection with id `collection_id`
      parameters:
      - description: The collection ID.
        in: path
        name: collection_id
        required: true
        schema:
          minimum: 1
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Collection'
      tags:
      - Collection
    """
    collection = get_index_collection(collection_id)
    return CollectionSerializer.jsonify(collection)
コード例 #6
0
ファイル: reconcile_api.py プロジェクト: pudo/aleph
def reconcile(collection_id=None):
    """Reconciliation API, emulates Google Refine API."""
    collection = None
    if collection_id is not None:
        collection = get_index_collection(collection_id)
    query = request.values.get('query')
    if query is not None:
        # single
        try:
            query = json.loads(query)
        except ValueError:
            query = {'query': query}
        return jsonify(reconcile_op(query, collection))

    queries = request.values.get('queries')
    if queries is not None:
        # multiple requests in one query
        try:
            qs = json.loads(queries)
            results = {}
            for k, q in qs.items():
                results[k] = reconcile_op(q, collection)
            return jsonify(results)
        except ValueError:
            raise BadRequest()
    return reconcile_index(collection)
コード例 #7
0
def index(collection_id):
    """
    ---
    get:
      summary: Fetch cross-reference results
      description: >-
        Fetch cross-reference matches for entities in the collection
        with id `collection_id`
      parameters:
      - in: path
        name: collection_id
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                allOf:
                - $ref: '#/components/schemas/QueryResponse'
                properties:
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/XrefResponse'
      tags:
      - Xref
      - Collection
    """
    get_index_collection(collection_id)
    result = XrefQuery.handle(request, collection_id=collection_id)
    context_id = result.parser.getint('context_id', request.authz.id)
    if context_id is not None:
        require(request.authz.can_read_role(context_id))
        pairs = []
        for xref in result.results:
            pairs.append((xref.get('entity_id'), xref.get('match_id')))
        decisions = Linkage.decisions(pairs, context_id)
        for xref in result.results:
            key = (xref.get('entity_id'), xref.get('match_id'))
            xref['decision'] = decisions.get(key)
    return XrefSerializer.jsonify_result(result)
コード例 #8
0
ファイル: reconcile_api.py プロジェクト: mudsill/aleph
def reconcile(collection_id=None):
    """Reconciliation API, emulates Google Refine API.
    ---
    post:
      summary: Freebase reconciliation API
      description: >
        An implementation of the reconciliation API from Freebase, used
        by OpenRefine to match entities.
      parameters:
      - description: The collection ID.
        in: path
        name: collection_id
        required: true
        schema:
          minimum: 1
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  type: object
      responses:
        '200':
          description: OK
      tags:
      - Collection
    """
    collection = None
    if collection_id is not None:
        collection = get_index_collection(collection_id)
    query = request.values.get("query")
    if query is not None:
        # single
        try:
            query = json.loads(query)
        except ValueError:
            query = {"query": query}
        return jsonify(reconcile_op(query, collection))

    queries = request.values.get("queries")
    if queries is not None:
        # multiple requests in one query
        try:
            qs = json.loads(queries)
            results = {}
            for k, q in qs.items():
                results[k] = reconcile_op(q, collection)
            return jsonify(results)
        except ValueError:
            raise BadRequest()
    return reconcile_index(collection)
コード例 #9
0
ファイル: collections_api.py プロジェクト: mustafaascha/aleph
def view(id):
    collection = get_index_collection(id)
    record_audit(Audit.ACT_COLLECTION, id=id)
    return serialize_data(collection, CollectionSchema)
コード例 #10
0
ファイル: collections_api.py プロジェクト: kjacks/aleph
def view(id):
    collection = get_index_collection(id)
    record_audit(Audit.ACT_COLLECTION, id=id)
    return CollectionSerializer.jsonify(collection)
コード例 #11
0
def view(id):
    collection = get_index_collection(id)
    return jsonify(collection, schema=CollectionSchema)
コード例 #12
0
ファイル: collections_api.py プロジェクト: wdsn/aleph
def view(collection_id):
    collection = get_index_collection(collection_id)
    return CollectionSerializer.jsonify(collection)
コード例 #13
0
ファイル: collections_api.py プロジェクト: pudo/aleph
def view(collection_id):
    collection = get_index_collection(collection_id)
    record_audit(Audit.ACT_COLLECTION, id=collection_id)
    return CollectionSerializer.jsonify(collection)
コード例 #14
0
def view(id):
    collection = get_index_collection(id)
    return serialize_data(collection, CollectionSchema)