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
|