projects
/
mp-sparql-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Allow include of db definitions MPSPARQL-15
[mp-sparql-moved-to-github.git]
/
src
/
sparql.c
diff --git
a/src/sparql.c
b/src/sparql.c
index
50f41f6
..
c738e5d
100644
(file)
--- a/
src/sparql.c
+++ b/
src/sparql.c
@@
-37,6
+37,13
@@
void yaz_sparql_destroy(yaz_sparql_t s)
nmem_destroy(s->nmem);
}
nmem_destroy(s->nmem);
}
+void yaz_sparql_include(yaz_sparql_t s, yaz_sparql_t u)
+{
+ struct sparql_entry *e = u->conf;
+ for (; e; e = e->next)
+ yaz_sparql_add_pattern(s, e->pattern, e->value);
+}
+
int yaz_sparql_add_pattern(yaz_sparql_t s, const char *pattern,
const char *value)
{
int yaz_sparql_add_pattern(yaz_sparql_t s, const char *pattern,
const char *value)
{
@@
-359,6
+366,10
@@
static int emit_prefixes(yaz_sparql_t s,
{
;
}
{
;
}
+ else if (!strncmp(e->pattern, "present", 7))
+ {
+ ;
+ }
else if (!strncmp(e->pattern, "uri", 3))
{
;
else if (!strncmp(e->pattern, "uri", 3))
{
;
@@
-372,19
+383,29
@@
static int emit_prefixes(yaz_sparql_t s,
return errors;
}
return errors;
}
-int yaz_sparql_lookup_schema(yaz_sparql_t s, const char *schema)
+struct sparql_entry *lookup_schema(yaz_sparql_t s, const char *schema)
{
struct sparql_entry *e;
for (e = s->conf; e; e = e->next)
{
{
struct sparql_entry *e;
for (e = s->conf; e; e = e->next)
{
+ if (!strncmp(e->pattern, "present.", 8))
+ {
+ if (!schema || !strcmp(e->pattern + 8, schema))
+ break;
+ }
if (!strncmp(e->pattern, "uri.", 4))
{
if (!schema || !strcmp(e->pattern + 4, schema))
break;
}
}
if (!strncmp(e->pattern, "uri.", 4))
{
if (!schema || !strcmp(e->pattern + 4, schema))
break;
}
}
- return e ? 1 : 0;
+ return e;
+}
+
+int yaz_sparql_lookup_schema(yaz_sparql_t s, const char *schema)
+{
+ return lookup_schema(s, schema) ? 1 : 0;
}
int yaz_sparql_from_uri_stream(yaz_sparql_t s,
}
int yaz_sparql_from_uri_stream(yaz_sparql_t s,
@@
-394,16
+415,7
@@
int yaz_sparql_from_uri_stream(yaz_sparql_t s,
const char *uri, const char *schema)
{
int r = 0, errors = emit_prefixes(s, addinfo, pr, client_data);
const char *uri, const char *schema)
{
int r = 0, errors = emit_prefixes(s, addinfo, pr, client_data);
- struct sparql_entry *e;
-
- for (e = s->conf; e; e = e->next)
- {
- if (!strncmp(e->pattern, "uri.", 4))
- {
- if (!schema || !strcmp(e->pattern + 4, schema))
- break;
- }
- }
+ struct sparql_entry *e = lookup_schema(s, schema);
if (!e)
errors++;
if (!errors)
if (!e)
errors++;
if (!errors)