annotate jamendo/sparql-archived/SeRQL/test_client.pl @ 27:d95e683fbd35 tip

Enable CORS on urispace redirects as well
author Chris Cannam
date Tue, 20 Feb 2018 14:52:02 +0000
parents df9685986338
children
rev   line source
Chris@0 1 /* This file is part of ClioPatria.
Chris@0 2
Chris@0 3 Author:
Chris@0 4 HTTP: http://e-culture.multimedian.nl/
Chris@0 5 GITWEB: http://gollem.science.uva.nl/git/ClioPatria.git
Chris@0 6 GIT: git://gollem.science.uva.nl/home/git/ClioPatria.git
Chris@0 7 GIT: http://gollem.science.uva.nl/home/git/ClioPatria.git
Chris@0 8 Copyright: 2007, E-Culture/MultimediaN
Chris@0 9
Chris@0 10 ClioPatria is free software: you can redistribute it and/or modify
Chris@0 11 it under the terms of the GNU General Public License as published by
Chris@0 12 the Free Software Foundation, either version 2 of the License, or
Chris@0 13 (at your option) any later version.
Chris@0 14
Chris@0 15 ClioPatria is distributed in the hope that it will be useful,
Chris@0 16 but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@0 17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@0 18 GNU General Public License for more details.
Chris@0 19
Chris@0 20 You should have received a copy of the GNU General Public License
Chris@0 21 along with ClioPatria. If not, see <http://www.gnu.org/licenses/>.
Chris@0 22 */
Chris@0 23
Chris@0 24 :- module(test_client,
Chris@0 25 [ graph/2, % +QID, -Triple
Chris@0 26 table/2, % +QID, -Row
Chris@0 27
Chris@0 28 count/0, % Count triples
Chris@0 29
Chris@0 30 list_repositories/0,
Chris@0 31 clear/0, % Clear all content
Chris@0 32
Chris@0 33 login/0,
Chris@0 34 login/2, % +User, +Password
Chris@0 35 logout/0,
Chris@0 36
Chris@0 37 upload/1, % Upload File
Chris@0 38 upload/2, % File, Options
Chris@0 39 add/1, % +Triples
Chris@0 40 del/1, % +Triple
Chris@0 41 wns/0, % Upload wordnet
Chris@0 42
Chris@0 43 sesame/0, % Select Java server
Chris@0 44 local/0 % Use SWI-Prolog server
Chris@0 45 ]).
Chris@0 46
Chris@0 47 :- load_files(sesame_client,
Chris@0 48 [ silent(true)
Chris@0 49 ]).
Chris@0 50
Chris@0 51 :- style_check(-atom).
Chris@0 52
Chris@0 53 local :-
Chris@0 54 set_sesame_default([ host(localhost),
Chris@0 55 port(3020),
Chris@0 56 path(''),
Chris@0 57 repository(default)
Chris@0 58 ]).
Chris@0 59
Chris@0 60 sesame :-
Chris@0 61 set_sesame_default([ host(gollem),
Chris@0 62 port(4242),
Chris@0 63 path('/sesame'),
Chris@0 64 repository('mem-rdfs-db')
Chris@0 65 ]).
Chris@0 66
Chris@0 67 :- local.
Chris@0 68
Chris@0 69
Chris@0 70 /*******************************
Chris@0 71 * QUERIES *
Chris@0 72 *******************************/
Chris@0 73
Chris@0 74 qg(1, 'construct distinct * from {S} P {O}').
Chris@0 75 qg(2, 'construct * from {<rdfs:Resource>} <rdfs:label> {L}').
Chris@0 76
Chris@0 77 graph(QueryID, Triple) :-
Chris@0 78 qg(QueryID, Query),
Chris@0 79 sesame_graph_query(Query,
Chris@0 80 Triple,
Chris@0 81 []).
Chris@0 82
Chris@0 83 count :-
Chris@0 84 qg(1, Query),
Chris@0 85 findall(T, sesame_graph_query(Query, T, []), Ts),
Chris@0 86 length(Ts, Len),
Chris@0 87 format('~D triples in store~n', [Len]).
Chris@0 88
Chris@0 89 qt(1, 'select distinct S from {S} P {O} where O like "Resource"').
Chris@0 90
Chris@0 91 % Give me wordnet synsets labeled `right' of type Noun
Chris@0 92 qt(right_noun,
Chris@0 93 'SELECT S
Chris@0 94 FROM {S} <rdfs:label> {L} ;
Chris@0 95 <rdf:type> {<wns:Noun>}
Chris@0 96 WHERE L like "right"
Chris@0 97 USING NAMESPACE
Chris@0 98 wns = <!http://www.cogsci.princeton.edu/~wn/schema/>').
Chris@0 99
Chris@0 100 qt(right_noun_r,
Chris@0 101 'SELECT S
Chris@0 102 FROM {S} <rdf:type> {<wns:Noun>} ;
Chris@0 103 <rdfs:label> {L}
Chris@0 104 WHERE L like "right"
Chris@0 105 USING NAMESPACE
Chris@0 106 wns = <!http://www.cogsci.princeton.edu/~wn/schema/>').
Chris@0 107
Chris@0 108 % Give me a WordNet word that belongs to multiple lexical categories
Chris@0 109 qt(multi_lex,
Chris@0 110 'SELECT DISTINCT L
Chris@0 111 FROM {S1} <rdfs:label> {L},
Chris@0 112 {S2} <rdfs:label> {L},
Chris@0 113 {S1} <rdf:type> {C1},
Chris@0 114 {S2} <rdf:type> {C2},
Chris@0 115 {C1} <serql:directSubClassOf> {<wns:LexicalConcept>},
Chris@0 116 {C2} <serql:directSubClassOf> {<wns:LexicalConcept>}
Chris@0 117 WHERE not C1 = C2
Chris@0 118 USING NAMESPACE
Chris@0 119 wns = <!http://www.cogsci.princeton.edu/~wn/schema/>').
Chris@0 120
Chris@0 121 table(QueryID, Row) :-
Chris@0 122 qt(QueryID, Query),
Chris@0 123 sesame_table_query(Query,
Chris@0 124 Row,
Chris@0 125 []).
Chris@0 126
Chris@0 127
Chris@0 128 /*******************************
Chris@0 129 * REPOSITORIES *
Chris@0 130 *******************************/
Chris@0 131
Chris@0 132 list_repositories :-
Chris@0 133 ( sesame_current_repository(Id, Atts, []),
Chris@0 134 format('~w ~w~n', [Id, Atts]),
Chris@0 135 fail
Chris@0 136 ; true
Chris@0 137 ).
Chris@0 138
Chris@0 139 clear :-
Chris@0 140 sesame_clear_repository([]).
Chris@0 141
Chris@0 142
Chris@0 143 /*******************************
Chris@0 144 * LOGIN *
Chris@0 145 *******************************/
Chris@0 146
Chris@0 147 % login
Chris@0 148 %
Chris@0 149 % Read facts from a file secrets.pl holing lines of the format
Chris@0 150 %
Chris@0 151 %% secret(Host:Port, User, Password).
Chris@0 152
Chris@0 153 login :-
Chris@0 154 sesame_client:sesame_setting(host(Host)),
Chris@0 155 sesame_client:sesame_setting(port(Port)),
Chris@0 156 read_file_to_terms('secrets.pl', Terms, []),
Chris@0 157 memberchk(secret(Host:Port, User, Password), Terms),
Chris@0 158 login(User, Password).
Chris@0 159
Chris@0 160
Chris@0 161 login(User, Password) :-
Chris@0 162 sesame_login(User, Password, []).
Chris@0 163
Chris@0 164 logout :-
Chris@0 165 sesame_logout([]).
Chris@0 166
Chris@0 167
Chris@0 168 /*******************************
Chris@0 169 * UPLOAD *
Chris@0 170 *******************************/
Chris@0 171
Chris@0 172 upload(rdfs) :-
Chris@0 173 sesame_upload_file('Ontologies/Base/rdfs.rdfs',
Chris@0 174 [ base_uri('rdfs.rdfs')
Chris@0 175 ]).
Chris@0 176 upload(wine) :-
Chris@0 177 sesame_upload_file('Ontologies/Demo/wine.owl',
Chris@0 178 [ base_uri('wine')
Chris@0 179 ]).
Chris@0 180 upload(File) :-
Chris@0 181 upload(File, []).
Chris@0 182
Chris@0 183 upload(File, Options) :-
Chris@0 184 absolute_file_name(File,
Chris@0 185 [ extensions([rdf,rdfs]),
Chris@0 186 access(read)
Chris@0 187 ],
Chris@0 188 Path),
Chris@0 189 sesame_upload_file(Path, Options).
Chris@0 190
Chris@0 191
Chris@0 192 add(Triples) :-
Chris@0 193 sesame_assert(Triples, []).
Chris@0 194
Chris@0 195 del(Triple) :-
Chris@0 196 sesame_retract(Triple, []).
Chris@0 197
Chris@0 198 wn_file('/staff/jan/src/Triple20/Ontologies/Public/wordnet-20000620.rdfs').
Chris@0 199 wn_file('/staff/jan/src/Triple20/Ontologies/Public/wordnet_hyponyms-20010201.rdf').
Chris@0 200 wn_file('/staff/jan/src/Triple20/Ontologies/Public/wordnet_similar-20010201.rdf').
Chris@0 201 wn_file('/staff/jan/src/Triple20/Ontologies/Public/wordnet_nouns-20010201.rdf').
Chris@0 202 wn_file('/staff/jan/src/Triple20/Ontologies/Public/wordnet_glossary-20010201.rdf').
Chris@0 203 wn_file('/staff/jan/src/Triple20/Ontologies/Public/wnclass.rdfs').
Chris@0 204
Chris@0 205 wns :-
Chris@0 206 clear,
Chris@0 207 forall(wn_file(File),
Chris@0 208 ( format(user_error, 'Uploading ~w ...', [File]),
Chris@0 209 sesame_upload_file(File, []),
Chris@0 210 format(user_error, 'done~n', []))).
Chris@0 211