Skip to main content

A convenience wrapper around the official grakn-python client

Project description

primal-grakn

A convenience wrapper around the official grakn-python client.

Features

  • Less code / boilerplate.
  • Response data looks and acts like primitive data structures (python lists / dicts etc.). Thus more immediately intelligble, accessable, and JSON-serialisable.
  • Some added conveniences such as match_or_insert function.
  • Still access all underlying grakn-python client functionality where needed.

Why

The grakn-python client provides a complete and efficient object-oriented method of interaction with a Grakn instance. It can require a lot of code and recursion to get data. This extension aims to provide convenience through reducing code involved in connecting to Grakn and working with response data. It reflects a manner of working with Grakn through python that I have found to be preferrable.

Usage

Example

import primal_grakn.primal_grakn as grakn

with grakn.Graph(uri='myuri', keyspace='mykeyspace') as graph:
    query = 'insert $a isa animal has name \"squirrel\";'  # Escape your quotes, or use a raw string
    concept_map = graph.execute('match $a isa animal; get;')
    print(concept_map)
        [{'a': {
            'id': 'V4144',
            'type': 'animal',
            'base_type': 'entity',
            'attributes': [{
                'id': 'V4216',
                'label': 'name',
                'value': 'squirrel'
            }]
        }}]
    print(concept_map.object)  # Get the underlying ConceptMap object
    print(concept_map['a'].object)  # Get the underlying Concept object
    graph.commit()  # Don't forget to commit changes if you make them. N.B. this also closes the session

API

primal_grakn.Graph

Name Type Description Params Example
Graph Class Initiates the session.
  • kwarg : uri : string : Default='localhost:48555'
  • kwarg : keyspace : string : Default=None
  • kwarg : credentials : dict : Default={}
Graph.execute Method Executes a query.
  • arg : query : string
execute('match $a isa animal')
Graph.commit Method Commits the changes and ends the session.
Graph.match_or_insert Method Given a graql query string, match if it exists in the graph, or else insert it.
  • arg : query : string : graql query without a prepended 'match' or 'insert' statement
match_or_insert('$a isa animal has name \"squirrel\";')

primal_grakn.ConceptDict

Dictionary respresenation of a Grakn Concept object.

Name Type Description Params Example
ConceptDict.object Grakn Concept object Corresponding grakn-python object

An explanation about explanations

At the time of writing, the explanation data structures Grakn provides are undocumented. Briefly, the Grakn ConceptMap object exposes the set of facts as a tree. The top level of this tree includes the inferred facts from the response, and the compositional facts are nested within deeper levels.

At present, we provide two structures to access these facts: one is .explanation, which is the explanation tree as it is exposed by grakn-python, parsed into the form of a python dictionary. The second is .flat_explanation, where the tree is flattened into a list. I found this much more convenient for my purposes, as it meant I could filter the list for only the types of concepts I was interested in for my explanation, and then sort the list into the logical order (Grakn does not provide any ordering in its explanation output).

If you don't need information about the depth of inferences underlying your response, use .flat_explanation.

I feel this is an area where ripe for improvement both as regards the Grakn API and third party packages such as this.

Installation

Clone the repo

git clone https://github.com/cyclecycle/pygrakn.git

Requirements

  • Grakn running.

  • Official python-grakn client:

    pip install grakn

Contributions

Are welcome :)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

primal-grakn-0.0.1.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

primal_grakn-0.0.1-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file primal-grakn-0.0.1.tar.gz.

File metadata

  • Download URL: primal-grakn-0.0.1.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6

File hashes

Hashes for primal-grakn-0.0.1.tar.gz
Algorithm Hash digest
SHA256 c7180741baa405df63e27c5a48ce8e0d833bfc6d6cba97943b63e46883500c11
MD5 4a263aac40bd24da531421eb1f78867b
BLAKE2b-256 72c400d953fa66d7cef28a2f3a956fb7d56fd9de4010ce516a3a677abd9b4e75

See more details on using hashes here.

File details

Details for the file primal_grakn-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: primal_grakn-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6

File hashes

Hashes for primal_grakn-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c00589897d5154fa2fd3513b1018b9345312094068ed101bf02f4f12b0e9e55a
MD5 444b764487daa9245d9d4d6eb81d8543
BLAKE2b-256 ea22b94f7ee586603da79783a262dd43e8c9eb9c011f8f751b468eec134ec89b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page