]> Triples Source 3 RASQAL Library Triples Source Source of matches to a triple pattern. Synopsis rasqal_triple_meta; rasqal_triples_match; rasqal_triples_source; rasqal_triples_source_factory; void rasqal_set_triples_source_factory (rasqal_world *world, void (register_fnrasqal_triples_source_factory *factory) (), void *user_data); Description A factory that provides the raw triple matches for a triple pattern against some RDF graph. The rasqal_triples_source_factory must create use a new rasqal_triples_source that can be used to initialise and build a rasqal_triples_match for some rasqal_triple (subject, predicate, object, origin URI). Details rasqal_triple_meta rasqal_triple_metatypedef struct { /* triple (subject, predicate, object) and origin */ rasqal_variable* bindings[4]; rasqal_triples_match *triples_match; void *context; rasqal_triple_parts parts; /* non-0 if the associated triple pattern contains no variables */ int is_exact; /* non-0 if the triple pattern has been fully executed */ int executed; } rasqal_triple_meta; Triple matching metadata for one triple pattern. rasqal_variable *bindings[4]; Variable bindings for this triple+origin to set. rasqal_triples_match *triples_match; The matcher that is setting these bindings. void *context; Context data used by the matcher. rasqal_triple_parts parts; Parts of the triple to match/bindings to set. int is_exact; non-0 if all parts of the triple are given int executed; non-0 if the triple pattern has been fully executed rasqal_triples_match rasqal_triples_matchtypedef struct { void *user_data; rasqal_triple_parts (*bind_match)(struct rasqal_triples_match_s* rtm, void *user_data, rasqal_variable *bindings[4], rasqal_triple_parts parts); void (*next_match)(struct rasqal_triples_match_s* rtm, void *user_data); int (*is_end)(struct rasqal_triples_match_s* rtm, void *user_data); void (*finish)(struct rasqal_triples_match_s* rtm, void *user_data); rasqal_world *world; } rasqal_triples_match; Triples match structure as initialised by rasqal_triples_source method init_triples_match. void *user_data; User data pointer for factory methods. bind_match () The [4]array (s,p,o,origin) bindings against the current triple match only touching triple parts given. Returns parts that were bound or 0 on failure. next_match () Move to next match. is_end () Check for end of triple match - return non-0 if is end. finish () Finish triples match and destroy any allocated memory. rasqal_world *world; rasqal_world object rasqal_triples_source rasqal_triples_sourcetypedef struct { rasqal_query* query; void *user_data; int (*init_triples_match)(rasqal_triples_match* rtm, struct rasqal_triples_source_s* rts, void *user_data, rasqal_triple_meta *m, rasqal_triple *t); int (*triple_present)(struct rasqal_triples_source_s* rts, void *user_data, rasqal_triple *t); void (*free_triples_source)(void *user_data); } rasqal_triples_source; Triples source as initialised by a rasqal_triples_source_factory. rasqal_query *query; Source for this query. void *user_data; Context user data passed into the factory methods. init_triples_match () Factory method to initalise a new rasqal_triples_match. triple_present () Factory method to return presence or absence of a complete triple. free_triples_source () Factory method to deallocate resources. rasqal_triples_source_factory rasqal_triples_source_factorytypedef struct { void *user_data; size_t user_data_size; int (*new_triples_source)(rasqal_query* query, void *factory_user_data, void *user_data, rasqal_triples_source* rts); } rasqal_triples_source_factory; A factory that initialises rasqal_triples_source structures to returning matches to a triple pattern. void *user_data; User data for triples_source_factory. size_t user_data_size; Size Of user_data for new_triples_source. new_triples_source () Create a new triples source - returns non-zero on failure < 0 is a 'no rdf data error', > 0 is an unspecified error.. rasqal_set_triples_source_factory () rasqal_set_triples_source_factoryvoid rasqal_set_triples_source_factory (rasqal_world *world, void (register_fnrasqal_triples_source_factory *factory) (), void *user_data); Register the factory to return triple sources. Registers the factory that returns triples sources. Note that there is only one of these per runtime. The rasqal_triples_source_factory factory method new_triples_source is called with the user data for some query and rasqal_triples_source. world : rasqal_world object register_fn : registration function user_data : user data for registration