aboutsummaryrefslogtreecommitdiffstats
path: root/src/env.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/env.c')
-rw-r--r--src/env.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/env.c b/src/env.c
index 66457df8..f0d0705c 100644
--- a/src/env.c
+++ b/src/env.c
@@ -205,8 +205,20 @@ SerdNode*
serd_env_expand_node(const SerdEnv* env, const SerdNode* node)
{
switch (node->type) {
- case SERD_LITERAL:
- break;
+ case SERD_LITERAL: {
+ const SerdNode* const short_datatype = serd_node_datatype(node);
+ if (short_datatype) {
+ SerdNode* const datatype = serd_env_expand_node(env, short_datatype);
+ if (datatype) {
+ SerdNode* ret = serd_new_literal(serd_node_string_view(node),
+ serd_node_string_view(datatype),
+ SERD_EMPTY_STRING());
+ serd_node_free(datatype);
+ return ret;
+ }
+ }
+ return NULL;
+ }
case SERD_URI:
return serd_new_resolved_uri(serd_node_string_view(node), env->base_uri);
case SERD_CURIE: {