summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-05-11 23:32:18 +0000
committerDavid Robillard <d@drobilla.net>2011-05-11 23:32:18 +0000
commit3feaad1a898d40e54f3ef7e076a05dd960eefefa (patch)
tree3c4e557a8ca63b78470d530e0efe10263cee9bc5 /src
parent9f6becfdd80dfe4cf1d99d0aefa8b257eb1b0c8d (diff)
downloadsord-3feaad1a898d40e54f3ef7e076a05dd960eefefa.tar.gz
sord-3feaad1a898d40e54f3ef7e076a05dd960eefefa.tar.bz2
sord-3feaad1a898d40e54f3ef7e076a05dd960eefefa.zip
Pass environment to sord write methods for CURIE abbreviation.
git-svn-id: http://svn.drobilla.net/sord/trunk@108 3d64ff67-21c5-427c-a301-fe4f08042e5a
Diffstat (limited to 'src')
-rw-r--r--src/sordi.c21
-rw-r--r--src/syntax.c12
2 files changed, 20 insertions, 13 deletions
diff --git a/src/sordi.c b/src/sordi.c
index 1f663ea..235c67a 100644
--- a/src/sordi.c
+++ b/src/sordi.c
@@ -120,8 +120,9 @@ main(int argc, char** argv)
SordWorld* world = sord_world_new();
SordModel* sord = sord_new(world, SORD_SPO|SORD_OPS, false);
+ SerdEnv* env = serd_env_new();
- bool success = sord_read_file(sord, input, NULL, NULL);
+ bool success = sord_read_file(sord, env, input, NULL, NULL);
printf("Loaded %zu statements\n", sord_num_nodes(world));
@@ -131,13 +132,20 @@ main(int argc, char** argv)
return 1;
}
- SerdEnv* env = serd_env_new();
+ SerdEnv* write_env = serd_env_new();
+
SerdWriter* writer = serd_writer_new(
- SERD_TURTLE, SERD_STYLE_ABBREVIATED|SERD_STYLE_RESOLVED,
- env, &base_uri, file_sink, stdout);
+ SERD_TURTLE,
+ SERD_STYLE_ABBREVIATED|SERD_STYLE_RESOLVED|SERD_STYLE_CURIED,
+ write_env, &base_uri, file_sink, stdout);
+
+ // Write @prefix directives
+ serd_env_foreach(env,
+ (SerdPrefixSink)serd_writer_set_prefix,
+ writer);
- // Query
- SordQuad pat = { 0, 0, 0, 0 };
+ // Write statements
+ SordQuad pat = { 0, 0, 0, 0 };
SordIter* iter = sord_find(sord, pat);
for (; !sord_iter_end(iter); sord_iter_next(iter)) {
SordQuad tup;
@@ -156,6 +164,7 @@ main(int argc, char** argv)
serd_writer_free(writer);
serd_env_free(env);
+ serd_env_free(write_env);
sord_free(sord);
diff --git a/src/syntax.c b/src/syntax.c
index 1964d24..ff2f248 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -207,6 +207,7 @@ sord_file_uri_to_path(const uint8_t* uri)
SORD_API
bool
sord_read_file(SordModel* model,
+ SerdEnv* env,
const uint8_t* uri,
SordNode* graph,
const uint8_t* blank_prefix)
@@ -223,7 +224,8 @@ sord_read_file(SordModel* model,
return false;
}
- const bool ret = sord_read_file_handle(model, fd, uri, graph, blank_prefix);
+ const bool ret = sord_read_file_handle(
+ model, env, fd, uri, graph, blank_prefix);
fclose(fd);
return ret;
}
@@ -231,6 +233,7 @@ sord_read_file(SordModel* model,
SORD_API
bool
sord_read_file_handle(SordModel* model,
+ SerdEnv* env,
FILE* fd,
const uint8_t* base_uri_str_in,
SordNode* graph,
@@ -244,8 +247,6 @@ sord_read_file_handle(SordModel* model,
fprintf(stderr, "Invalid base URI <%s>\n", base_uri_str);
}
- SerdEnv* env = serd_env_new();
-
SerdNode base_uri_node = serd_node_from_string(SERD_URI, base_uri_str);
serd_env_set_base_uri(env, &base_uri_node);
@@ -263,7 +264,6 @@ sord_read_file_handle(SordModel* model,
const SerdStatus ret = serd_reader_read_file(state.reader, fd, base_uri_str);
serd_reader_free(state.reader);
- serd_env_free(env);
free(base_uri_str);
return (ret == SERD_SUCCESS);
@@ -272,6 +272,7 @@ sord_read_file_handle(SordModel* model,
SORD_API
bool
sord_read_string(SordModel* model,
+ SerdEnv* env,
const uint8_t* str,
const uint8_t* base_uri_str_in)
{
@@ -283,8 +284,6 @@ sord_read_string(SordModel* model,
fprintf(stderr, "Invalid base URI <%s>\n", base_uri_str);
}
- SerdEnv* env = serd_env_new();
-
SerdNode base_uri_node = serd_node_from_string(SERD_URI, base_uri_str);
serd_env_set_base_uri(env, &base_uri_node);
@@ -298,7 +297,6 @@ sord_read_string(SordModel* model,
const SerdStatus status = serd_reader_read_string(state.reader, str);
serd_reader_free(state.reader);
- serd_env_free(env);
free(base_uri_str);
return (status == SERD_SUCCESS);