source: test_stw.py @ 23:e97c3dd6107b

Revision 23:e97c3dd6107b, 3.3 KB checked in by andre.hagenbruch@rub.de, 7 years ago (diff)

Implemented link checkers, improved support for publication types...

Line 
1#!/usr/bin/env python
2# encoding: utf-8
3"""
4test_stw.py
5
6Created by Andre Hagenbruch on 2009-11-18.
7Copyright (c) 2009 University Library Bochum. All rights reserved.
8"""
9
10from urllib import urlopen,quote_plus,unquote
11from simplejson import loads
12
13class connection:
14    def __init__(self,url):
15        self.baseurl=url
16        self.sparql_prefix=""
17   
18    def addnamespace(self,id,ns):
19        self.sparql_prefix+='PREFIX %s:<%s>\n' % (id,ns) 
20   
21    def __getsparql__(self,method):
22        #print self.baseurl+method
23        data=urlopen(self.baseurl+method).read()
24        try:
25            result=loads(data)['results']['bindings']
26            return result
27        except:
28            return [{'error':data}];
29   
30    def repositories(self):
31        return self.__getsparql__('repositories')
32       
33    def use_repository(self,r):
34        self.repository=r
35   
36    def query(self,q):
37        q='repositories/'+self.repository+'?query='+quote_plus(self.sparql_prefix+q)
38        return self.__getsparql__(q)
39       
40    def construct_query(self,q):
41        q='repositories/'+self.repository+'?query='+quote_plus(self.sparql_prefix+q)
42        data=urlopen(self.baseurl+q).read()
43        return data
44   
45    def postdata(self,data):
46        #/openrdf-sesame/repositories/mem-rdf/statements
47        host=baseurl+'/repositories/'+self.repository+'/statements'
48        res=urlopen(host,data)
49        return res
50       
51       
52if __name__=='__main__':
53        c=connection('http://134.147.247.39:8084/openrdf-sesame/')
54        c.use_repository('stw')
55        c.addnamespace('skos', 'http://www.w3.org/2004/02/skos/core#')
56       
57        ids = ('20368-5', '18687-4', '12594-6', '19102-4', '12215-5', '19142-6', '16092-3', '12438-6', '19073-6', '11185-0', '19535-1', '18012-3', '16809-5', '19673-3', '13650-3')
58       
59        descriptors = {}
60        subjects = set()
61       
62        for myid in ids:
63
64                p = c.query("""
65                                        SELECT DISTINCT ?pref
66                                        WHERE {
67                                                <http://zbw.eu/stw/descriptor/%s> skos:prefLabel ?pref.
68                                        }
69                                        """ % myid)
70                               
71                a = c.query("""
72                                        SELECT DISTINCT ?alt
73                                        WHERE {
74                                                <http://zbw.eu/stw/descriptor/%s> skos:altLabel ?alt.
75                                        }
76                                        """ % myid)
77       
78                n = c.query("""
79                                        SELECT DISTINCT ?narrower
80                                        WHERE {
81                                                <http://zbw.eu/stw/descriptor/%s> skos:narrower ?nar. ?nar skos:prefLabel ?narrower
82                                        }
83                                        """ % myid)
84
85                # b = c.query("""
86                #                       SELECT DISTINCT ?broader
87                #                       WHERE {
88                #                               <http://zbw.eu/stw/descriptor/%s> skos:broader ?bro. ?bro skos:prefLabel ?broader
89                #                       }
90                #                       """ % myid)
91                               
92                rel = c.query("""
93                                        SELECT DISTINCT ?related
94                                        WHERE {
95                                                <http://zbw.eu/stw/descriptor/%s> skos:related ?rel. ?rel skos:prefLabel ?related
96                                        }
97                                        """ % myid)
98
99                print myid
100                print p
101
102                for r in p:
103                        for i in r:
104                                #print r[i]['value']
105                                subjects.add(r[i]['value'])
106                                if r[i]['xml:lang'] == 'de':
107                                        descriptors.setdefault(myid, []).append(r[i]['value'])
108                                               
109                for r in a:
110                        for i in r:
111                                #print r[i]['value']
112                                subjects.add(r[i]['value'])
113                                if r[i]['xml:lang'] == 'de':
114                                        descriptors.setdefault(myid, []).append(r[i]['value'])
115       
116                for r in n:
117                        for i in r:
118                                #print r[i]['value']
119                                subjects.add(r[i]['value'])
120       
121                # for r in b:
122                #       for i in r:
123                #               print r[i]['value']
124               
125                for r in rel:
126                        for i in r:
127                                #print r[i]['value']
128                                subjects.add(r[i]['value'])
129                       
130                #print '\n\n'
131        print subjects
132        print descriptors
Note: See TracBrowser for help on using the repository browser.