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