File: sparql.py

package info (click to toggle)
sparql-wrapper-python 1.7.6-2~bpo8%2B1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-backports
  • size: 296 kB
  • sloc: python: 1,697; sh: 32; makefile: 18
file content (83 lines) | stat: -rwxr-xr-x 2,303 bytes parent folder | download | duplicates (3)
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
#!/usr/bin/python
# -*- coding: utf-8 -*-


from SPARQLWrapper import SPARQLWrapper2, SPARQLWrapper, TURTLE
import sys, getopt

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)