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)
{
}
wrbuf_puts(addinfo, ">");
break;
+ case 't':
+ switch (term->which)
+ {
+ case Z_Term_general:
+ wrbuf_json_write(addinfo,
+ term->u.general->buf, term->u.general->len);
+ break;
+ case Z_Term_numeric:
+ wrbuf_printf(addinfo, ODR_INT_PRINTF, *term->u.numeric);
+ break;
+ case Z_Term_characterString:
+ wrbuf_json_puts(addinfo, term->u.characterString);
+ break;
+ }
+ break;
case 'd':
switch (term->which)
{
{
;
}
+ else if (!strncmp(e->pattern, "present", 7))
+ {
+ ;
+ }
else if (!strncmp(e->pattern, "uri", 3))
{
;
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)
{
+ 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;
}
}
- 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,
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)
return errors ? -1 : r;
}
+void yaz_sparql_explain_indexes( yaz_sparql_t s, WRBUF w, int indent)
+{
+ char indentspace[200]; // must be enough
+ assert(indent<200);
+ int i;
+ for (i=0; i < indent; i++)
+ indentspace[i] = ' ';
+ indentspace[indent] = '\0';
+
+ struct sparql_entry *e;
+ wrbuf_puts(w,indentspace);
+ wrbuf_puts(w,"<indexInfo>\n");
+
+ for (e = s->conf; e; e = e->next)
+ {
+ /*
+ wrbuf_puts(w," <FOO>");
+ wrbuf_xmlputs(w, e->pattern );
+ wrbuf_puts(w," : ");
+ wrbuf_xmlputs(w, e->value );
+ wrbuf_puts(w," </FOO>\n");
+ */
+ if ( strncmp(e->pattern, "index.", 6 ) == 0 )
+ {
+ wrbuf_puts(w,indentspace);
+ wrbuf_puts(w," <index>\n");
+ wrbuf_puts(w,indentspace);
+ wrbuf_puts(w," <title>");
+ wrbuf_xmlputs(w, e->pattern + 6);
+ wrbuf_puts(w,"</title>\n");
+ wrbuf_puts(w,indentspace);
+ wrbuf_puts(w," <map><name>");
+ wrbuf_xmlputs(w, e->pattern + 6);
+ wrbuf_puts(w,"</name></map>\n");
+ wrbuf_puts(w,indentspace);
+ wrbuf_puts(w," </index>\n");
+ }
+ }
+ wrbuf_puts(w,indentspace);
+ wrbuf_puts(w,"</indexInfo>\n");
+}
+
/*
* Local variables:
* c-basic-offset: 4