Skip to main content

An asynchronous SPARQL library using aiohttp

Project description

License Build Status Code Coverage

An asynchronous SPARQL library using aiohttp

Synopsis

from aiosparql.syntax import (
    IRI, Namespace, Node, PrefixedName, RDF, RDFTerm, Triples)

# define a namespace

class Boo(Namespace):
    __iri__ = IRI("http://boo#")
    SomeClass = PrefixedName
    website = PrefixedName
    label = PrefixedName

# create a node

node = Node("<subject>", {
    RDF.type: Boo.SomeClass,
    Boo.website: IRI("http://example.org"),
    Boo.label: "some label", # "some label" will be automatically escaped
})

# missing prefixed names will show on your IDE and fail on execution

print(Boo.something) # AttributeError!

# create triples

triples = Triples([("s", "p", "o")]) # o is automatically escaped
triples.append(("s", Boo.website, IRI("http://example.org")))
triples.extend([("s", Boo.website, IRI("http://example.org"))])

print(triples) # print the triples is a format usable directly in a SPARQL
               # query. It also groups by subject automatically for you


from aiosparql.client import SPARQLClient

client = SPARQLClient("http://dbpedia.org/sparql")
result = await client.query("select * where {?s ?p ?o} limit 1")
# result is a dict of the JSON result
result = await client.update("""
    with {{graph}}
    insert data {
        {{}}
    }
    """, triples)
# the triples will be automatically indented to produce a beautiful query


from aiosparql.escape import escape_any

print(escape_any(True)) # "true"
print(escape_any("foo")) # "foo"
print(escape_any(5)) # "5"
print(escape_any(5.5)) # "5.5"^^xsd:double

Installation

  • User space installation

    easy_install --user aiosparql
  • System wide installation

    easy_install aiosparql

Requirements

  • Python >= 3.5

Testing

In order for the tests to run, you must have the following Docker containers started:

docker run -d --name travis-virtuoso -p 8890:8890 -e SPARQL_UPDATE=true tenforce/virtuoso:1.2.0-virtuoso7.2.2
docker run -d -p 3030:3030 --name travis-fuseki -e ADMIN_PASSWORD=PASSWORD -e ENABLE_DATA_WRITE=true -e ENABLE_UPDATE=true -e ENABLE_UPLOAD=true secoresearch/fuseki

Credits

This software has been produced by Dacota One.

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

aiosparql-0.11.0.tar.gz (17.3 kB view details)

Uploaded Source

Built Distribution

aiosparql-0.11.0-py3-none-any.whl (13.3 kB view details)

Uploaded Python 3

File details

Details for the file aiosparql-0.11.0.tar.gz.

File metadata

  • Download URL: aiosparql-0.11.0.tar.gz
  • Upload date:
  • Size: 17.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.6.7

File hashes

Hashes for aiosparql-0.11.0.tar.gz
Algorithm Hash digest
SHA256 3d6281430f610b4429e548086693ecc4c95a4011c0b8965ba2aa6c7b7c3770ad
MD5 6624e78eddbb3dd96d5a4b8ea74e6412
BLAKE2b-256 07cb366c48433276b5ecc5427059d0b1bd0158772693a4fd071a91d05be3fc28

See more details on using hashes here.

Provenance

File details

Details for the file aiosparql-0.11.0-py3-none-any.whl.

File metadata

  • Download URL: aiosparql-0.11.0-py3-none-any.whl
  • Upload date:
  • Size: 13.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.6.7

File hashes

Hashes for aiosparql-0.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7f173abea712fd93408af940924c973d67562f5e1c0f59ec3e3b4111222b01f4
MD5 db7e49924056fcbae1d7666c46e055f4
BLAKE2b-256 3996219a247ce34ef49a9b412d4188e003491f627e29036ea6bf9a32a2aa26b8

See more details on using hashes here.

Provenance

Supported by

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