static void rasqal_raptor_statement_handler(void *user_data, raptor_statement *statement) { rasqal_raptor_triples_source_user_data* rtsc; rasqal_raptor_triple *triple; rtsc = (rasqal_raptor_triples_source_user_data*)user_data; triple = RASQAL_MALLOC(rasqal_raptor_triple*, sizeof(rasqal_raptor_triple)); triple->next = NULL; triple->triple = raptor_statement_as_rasqal_triple(rtsc->world, statement); /* this origin URI literal is shared amongst the triples and * freed only in rasqal_raptor_free_triples_source */ rasqal_triple_set_origin(triple->triple, rtsc->source_literals[rtsc->source_index]); if(rtsc->tail) rtsc->tail->next = triple; else rtsc->head = triple; rtsc->tail = triple; }
static int rasqal_algebra_visitor_set_origin(rasqal_query* query, rasqal_algebra_node* node, void *user_data) { rasqal_literal *origin = (rasqal_literal*)user_data; int i; if(node->op != RASQAL_ALGEBRA_OPERATOR_BGP) return 0; for(i = node->start_column; i <= node->end_column; i++) { rasqal_triple *t; rasqal_literal *o = NULL; t = (rasqal_triple*)raptor_sequence_get_at(node->triples, i); if(origin) o = rasqal_new_literal_from_literal(origin); rasqal_triple_set_origin(t, o); } return 0; }