Chris@0
|
1 :- module(server, [server/0]).
|
Chris@0
|
2
|
Chris@0
|
3 :- use_module(library('http/thread_httpd')).
|
Chris@0
|
4 :- use_module(library('http/http_client')).
|
Chris@0
|
5 :- use_module(library('http/http_mime_plugin')).
|
Chris@0
|
6 :- use_module(library('semweb/rdf_db')).
|
Chris@0
|
7 :- use_module(library('semweb/rdf_turtle')).
|
Chris@0
|
8
|
Chris@0
|
9 ns('http://dbtune.org/people/').
|
Chris@0
|
10
|
Chris@0
|
11
|
Chris@0
|
12 server(Port, Options) :-
|
Chris@0
|
13 http_server(reply,[ port(Port),timeout(20)| Options]).
|
Chris@0
|
14
|
Chris@0
|
15
|
Chris@0
|
16 reply(Request) :-
|
Chris@0
|
17 member(method(post), Request), !,
|
Chris@0
|
18 http_read_data(Request,Data,[]),
|
Chris@0
|
19 format(user_output,'~w\n',[Data]),
|
Chris@0
|
20 member((turtle=Turtle),Data),
|
Chris@0
|
21 parse_turtle(Turtle,Triples),
|
Chris@0
|
22 member((name=Name),Data),
|
Chris@0
|
23 ((exists_directory(Name),!);(make_directory(Name))),
|
Chris@0
|
24 ns(NS),
|
Chris@0
|
25 format(atom(File),'~w/content.rdf',[Name]),
|
Chris@0
|
26 format(user_output,' - Dumping ~w\n',[File]),
|
Chris@0
|
27 open(File,write,S),
|
Chris@0
|
28 parse_turtle(Turtle,Triples),
|
Chris@0
|
29 rdf_write_xml(S,Triples),
|
Chris@0
|
30 close(S),
|
Chris@0
|
31 atom_concat(NS,File,URL),
|
Chris@0
|
32 throw(http_reply(see_other(URL),[])).
|
Chris@0
|
33
|
Chris@0
|
34
|
Chris@0
|
35 parse_turtle(Turtle,Triples) :-
|
Chris@0
|
36 tmp_file(ttl,Tmp),
|
Chris@0
|
37 open(Tmp,write,S),
|
Chris@0
|
38 write(S,Turtle),
|
Chris@0
|
39 close(S),
|
Chris@0
|
40 rdf_load_turtle(Tmp,Triples,[base_uri('')]).
|
Chris@0
|
41
|
Chris@0
|
42
|
Chris@0
|
43
|
Chris@0
|
44 server :- server(1112,[]).
|
Chris@0
|
45
|