Chris@0: :- module(server, [server/0]). Chris@0: Chris@0: :- use_module(library('http/thread_httpd')). Chris@0: :- use_module(library('http/http_client')). Chris@0: :- use_module(library('http/http_mime_plugin')). Chris@0: :- use_module(library('semweb/rdf_db')). Chris@0: :- use_module(library('semweb/rdf_turtle')). Chris@0: Chris@0: ns('http://dbtune.org/people/'). Chris@0: Chris@0: Chris@0: server(Port, Options) :- Chris@0: http_server(reply,[ port(Port),timeout(20)| Options]). Chris@0: Chris@0: Chris@0: reply(Request) :- Chris@0: member(method(post), Request), !, Chris@0: http_read_data(Request,Data,[]), Chris@0: format(user_output,'~w\n',[Data]), Chris@0: member((turtle=Turtle),Data), Chris@0: parse_turtle(Turtle,Triples), Chris@0: member((name=Name),Data), Chris@0: ((exists_directory(Name),!);(make_directory(Name))), Chris@0: ns(NS), Chris@0: format(atom(File),'~w/content.rdf',[Name]), Chris@0: format(user_output,' - Dumping ~w\n',[File]), Chris@0: open(File,write,S), Chris@0: parse_turtle(Turtle,Triples), Chris@0: rdf_write_xml(S,Triples), Chris@0: close(S), Chris@0: atom_concat(NS,File,URL), Chris@0: throw(http_reply(see_other(URL),[])). Chris@0: Chris@0: Chris@0: parse_turtle(Turtle,Triples) :- Chris@0: tmp_file(ttl,Tmp), Chris@0: open(Tmp,write,S), Chris@0: write(S,Turtle), Chris@0: close(S), Chris@0: rdf_load_turtle(Tmp,Triples,[base_uri('')]). Chris@0: Chris@0: Chris@0: Chris@0: server :- server(1112,[]). Chris@0: