Mercurial > hg > audiodb
diff sparql/mod_audiodb/mod_audiodb.c @ 600:337e5962218a
Apache RDF module generalization
Updated apache module to produce xml or json depending on the query
string.
author | mas01mj |
---|---|
date | Thu, 13 Aug 2009 11:20:56 +0000 |
parents | c6debbac3216 |
children | 783a1a5e51b2 |
line wrap: on
line diff
--- a/sparql/mod_audiodb/mod_audiodb.c Thu Aug 13 11:20:56 2009 +0000 +++ b/sparql/mod_audiodb/mod_audiodb.c Thu Aug 13 11:20:56 2009 +0000 @@ -11,13 +11,9 @@ #include "apreq2/apreq_module_apache2.h" #include <rasqal.h> -static int ap_dump_table(void *baton, const char *key, const char *value) -{ - if (key && value) - fprintf(stderr, "%s:%s\n", key, value); - fflush(stderr); - return 1; -} +#define BASE_URI "http://purl.org/ontology/af/" +#define JSON_URI "http://www.w3.org/2001/sw/DataAccess/json-sparql/" +#define SPARQL_URI "http://www.w3.org/TR/2006/WD-rdf-sparql-XMLres-20070614/" static int log_out(void *user_data, librdf_log_message *message) { @@ -44,7 +40,10 @@ if(apreq_args(h, &form_table) != APR_SUCCESS) return DECLINED; - const unsigned char *query_string = apr_table_get(form_table, "query"); + const char *query_string = apr_table_get(form_table, "query"); + const char *output = apr_table_get(form_table, "output"); + if(!output) + output = "xml"; int rc = 0; librdf_world* world = librdf_new_world(); @@ -65,7 +64,7 @@ } librdf_query *query; - if (!(query = librdf_new_query(world, "sparql", NULL, query_string, NULL))) + if (!(query = librdf_new_query(world, "sparql", NULL, (unsigned char*)query_string, NULL))) { rc = 3; goto error; @@ -78,9 +77,17 @@ goto error; } - librdf_uri *sparql_uri = librdf_new_uri( world, "http://www.w3.org/TR/2006/WD-rdf-sparql-XMLres-20070614/"); - unsigned char* out = librdf_query_results_to_string(results, sparql_uri, librdf_new_uri(world, "http://purl.org/ontology/af/")); + librdf_uri *output_uri; + + if(strcmp(output, "json") == 0) + output_uri = librdf_new_uri( world,(unsigned char *) JSON_URI ); + else + output_uri = librdf_new_uri( world,(unsigned char *) SPARQL_URI ); + + const unsigned char* out = librdf_query_results_to_string(results, output_uri, librdf_new_uri(world, (unsigned char*) BASE_URI)); + + librdf_free_uri(output_uri); librdf_storage_close(storage); librdf_free_storage(storage); librdf_free_world(world);