annotate rdf-pastebin/server.pl @ 19:1e79ce3ff5f5 tip

Simplify and cut some non-working resource paths
author Chris Cannam
date Wed, 08 Nov 2017 15:27:23 +0000
parents 1e44d666ced1
children
rev   line source
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