mirror of
				https://github.com/cookiengineer/audacity
				synced 2025-11-03 23:53:55 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			128 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* -*- Mode: c; c-basic-offset: 2 -*-
 | 
						|
 *
 | 
						|
 * example5.c - Redland example code using querying
 | 
						|
 *
 | 
						|
 * Copyright (C) 2004-2008, David Beckett http://www.dajobe.org/
 | 
						|
 * Copyright (C) 2004-2004, University of Bristol, UK http://www.bristol.ac.uk/
 | 
						|
 * 
 | 
						|
 * This package is Free Software and part of Redland http://librdf.org/
 | 
						|
 * 
 | 
						|
 * It is licensed under the following three licenses as alternatives:
 | 
						|
 *   1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
 | 
						|
 *   2. GNU General Public License (GPL) V2 or any newer version
 | 
						|
 *   3. Apache License, V2.0 or any newer version
 | 
						|
 * 
 | 
						|
 * You may not use this file except in compliance with at least one of
 | 
						|
 * the above three licenses.
 | 
						|
 * 
 | 
						|
 * See LICENSE.html or LICENSE.txt at the top of this package for the
 | 
						|
 * complete terms and further detail along with the license texts for
 | 
						|
 * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
 | 
						|
 * 
 | 
						|
 * 
 | 
						|
 */
 | 
						|
 | 
						|
 | 
						|
#include <stdio.h>
 | 
						|
#include <ctype.h>
 | 
						|
#include <string.h>
 | 
						|
#include <stdarg.h>
 | 
						|
 | 
						|
#include <redland.h>
 | 
						|
 | 
						|
/* one prototype needed */
 | 
						|
int main(int argc, char *argv[]);
 | 
						|
 | 
						|
 | 
						|
int
 | 
						|
main(int argc, char *argv[]) 
 | 
						|
{
 | 
						|
  char *program=argv[0];
 | 
						|
  librdf_world* world;
 | 
						|
  librdf_storage *storage;
 | 
						|
  librdf_model* model;
 | 
						|
  const char *parser_name;
 | 
						|
  librdf_parser* parser;
 | 
						|
  librdf_query* query;
 | 
						|
  librdf_query_results* results;
 | 
						|
  librdf_uri *uri;
 | 
						|
  char *query_string=NULL;
 | 
						|
  
 | 
						|
  world=librdf_new_world();
 | 
						|
  librdf_world_open(world);
 | 
						|
 | 
						|
  if(argc !=3) {
 | 
						|
    fprintf(stderr, "USAGE: %s CONTENT-URI QUERY-STRING\n", program);
 | 
						|
    return 1; 
 | 
						|
  }
 | 
						|
  
 | 
						|
  uri=librdf_new_uri(world, argv[1]);
 | 
						|
  query_string=argv[2];
 | 
						|
  
 | 
						|
  model=librdf_new_model(world, storage=librdf_new_storage(world, "hashes", "test", "new='yes',hash-type='bdb',dir='.'"), NULL);
 | 
						|
  if(!model || !storage) {
 | 
						|
    fprintf(stderr, "%s: Failed to make model or storage\n", program);
 | 
						|
    return 1;
 | 
						|
  }
 | 
						|
 | 
						|
  parser_name=raptor_guess_parser_name(NULL, NULL, NULL, 0, librdf_uri_as_string(uri));
 | 
						|
  parser=librdf_new_parser(world, parser_name, NULL, NULL);
 | 
						|
  librdf_parser_parse_into_model(parser, uri, NULL, model);
 | 
						|
  librdf_free_parser(parser);
 | 
						|
  librdf_free_uri(uri);
 | 
						|
 | 
						|
  query=librdf_new_query(world, "rdql", NULL, NULL, query_string);
 | 
						|
  
 | 
						|
  results=librdf_model_query_execute(model, query);
 | 
						|
  if(!results) {
 | 
						|
    fprintf(stderr, "%s: Query of model with '%s' failed\n", 
 | 
						|
            program, query_string);
 | 
						|
    return 1;
 | 
						|
  }
 | 
						|
 | 
						|
  while(!librdf_query_results_finished(results)) {
 | 
						|
    const char **names=NULL;
 | 
						|
    librdf_node* values[10];
 | 
						|
    
 | 
						|
    if(librdf_query_results_get_bindings(results, &names, values))
 | 
						|
      break;
 | 
						|
    
 | 
						|
    fputs("result: [", stdout);
 | 
						|
    if(names) {
 | 
						|
      int i;
 | 
						|
      
 | 
						|
      for(i=0; names[i]; i++) {
 | 
						|
        fprintf(stdout, "%s=", names[i]);
 | 
						|
        if(values[i]) {
 | 
						|
          librdf_node_print(values[i], stdout);
 | 
						|
          librdf_free_node(values[i]);
 | 
						|
        } else
 | 
						|
          fputs("NULL", stdout);
 | 
						|
        if(names[i+1])
 | 
						|
          fputs(", ", stdout);
 | 
						|
      }
 | 
						|
    }
 | 
						|
    fputs("]\n", stdout);
 | 
						|
    
 | 
						|
    librdf_query_results_next(results);
 | 
						|
  }
 | 
						|
  
 | 
						|
  fprintf(stdout, "%s: Query returned %d results\n", program, 
 | 
						|
          librdf_query_results_get_count(results));
 | 
						|
 | 
						|
  librdf_free_query_results(results);
 | 
						|
  librdf_free_query(query);
 | 
						|
  
 | 
						|
  librdf_free_model(model);
 | 
						|
  librdf_free_storage(storage);
 | 
						|
 | 
						|
  librdf_free_world(world);
 | 
						|
 | 
						|
#ifdef LIBRDF_MEMORY_DEBUG
 | 
						|
  librdf_memory_report(stderr);
 | 
						|
#endif
 | 
						|
	
 | 
						|
  /* keep gcc -Wall happy */
 | 
						|
  return(0);
 | 
						|
}
 |