File: sparql.py

package info (click to toggle)
sparql-wrapper-python 2.0.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,228 kB
  • sloc: python: 14,201; makefile: 30
file content (84 lines) | stat: -rwxr-xr-x 2,264 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
import getopt
from SPARQLWrapper import SPARQLWrapper2

localSparqler = "http://localhost:2020/sparql"
localVirtuoso = "http://localhost:8890/sparql"

def main(server, query, sponge=False):
    sparql = SPARQLWrapper2(server)
    if sponge:
        sparql.addExtraURITag("should-sponge", "grab-everything")

    sparql.setQuery(query)
    res = sparql.query()
    variables = res.variables

    print("Variables:")
    print(variables)
    print()
    print("Bindings:")
    for b in res.bindings:
        for v in res.variables:
            try:
                val = b[v]
                if val.lang:
                    str = "%s: %s@%s" % (v, val.value, val.lang)
                elif val.datatype:
                    str = "%s: %s^^%s" % (v, val.value, val.datatype)
                else:
                    str = "%s: %s" % (v, val.value)
            except KeyError:
                # no binding to that one...
                str = "%s: <<None>>" % v
            print(str.encode('utf-8'))
        print()



# -------------------------------------------------------------------------------------------------------------
server = localSparqler
query = ""
sponge = False
usagetxt = """%s [-s] [-u url] [file]
-s:      use local sparqler (default)
-v:      use local virtuoso
-u url:  server url
-p:      issue an extra sponge for virtuoso
file: sparql query file
"""
def usage():
    print(usagetxt % sys.argv[0])
    sys.exit(1)

if __name__ == '__main__':
    if len(sys.argv) == 1:
        usage()
    try:
        opts, args = getopt.getopt(sys.argv[1:], "shu:pv")
        for o, a in opts:
            if o == "-s":
                server = localSparqler
            elif o == "-v":
                server = localVirtuoso
                sponge = True
            elif o == "-h":
                print(usage)
                sys.exit(0)
            elif o == "-u":
                server = a
            elif o == "-p":
                sponge = True
        if query == "" and len(args) > 0:
            inp = file(args[0])
            query = ""
            for l in inp:
                query += l
    except:
        usage()
    if query == "":
        usage()
    main(server, query, sponge)