The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" 
               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY version SYSTEM "version.xml">
]>
<refentry id="rasqal-section-triples-source">
<refmeta>
<refentrytitle role="top_of_page">Triples Source</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>RASQAL Library</refmiscinfo>
</refmeta>

<refnamediv>
<refname>Triples Source</refname>
<refpurpose>Source of matches to a triple pattern.</refpurpose>
<!--[<xref linkend="desc" endterm="desc.title"/>]-->
</refnamediv>

<refsynopsisdiv role="synopsis">
<title role="synopsis.title">Synopsis</title>

<synopsis>



typedef     <link linkend="rasqal-triples-match">rasqal_triples_match</link>;
typedef     <link linkend="rasqal-triples-source">rasqal_triples_source</link>;
            <link linkend="rasqal-triples-source-factory">rasqal_triples_source_factory</link>;
<link linkend="void">void</link>        <link linkend="rasqal-set-triples-source-factory">rasqal_set_triples_source_factory</link>
                                            (<link linkend="void">void</link> (*register_fn) (rasqal_triples_source_factory *factory),
                                             <link linkend="void">void</link> *user_data);
</synopsis>
</refsynopsisdiv>









<refsect1 role="desc">
<title role="desc.title">Description</title>
<para>
A factory that provides the raw triple matches for a triple pattern
against some RDF graph.  The <link linkend="rasqal-triples-source-factory"><type>rasqal_triples_source_factory</type></link>
must create use a new <link linkend="rasqal-triples-source"><type>rasqal_triples_source</type></link> that can be used
to initialise and build a <link linkend="rasqal-triples-match"><type>rasqal_triples_match</type></link> for some
<link linkend="rasqal-triple"><type>rasqal_triple</type></link> (subject, predicate, object, origin URI).
</para>
</refsect1>

<refsect1 role="details">
<title role="details.title">Details</title>
<refsect2>
<title><anchor id="rasqal-triples-match" role="typedef"/>rasqal_triples_match</title>
<indexterm><primary>rasqal_triples_match</primary></indexterm><programlisting>typedef struct rasqal_triples_match_s rasqal_triples_match;
</programlisting>
<para>
Triples match structure as initialised by <link linkend="rasqal-triples-source"><type>rasqal_triples_source</type></link>
method init_triples_match.</para>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="rasqal-triples-source" role="typedef"/>rasqal_triples_source</title>
<indexterm><primary>rasqal_triples_source</primary></indexterm><programlisting>typedef struct rasqal_triples_source_s rasqal_triples_source;
</programlisting>
<para>
Triples source as initialised by a <link linkend="rasqal-triples-source-factory"><type>rasqal_triples_source_factory</type></link>.</para>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="rasqal-triples-source-factory" role="struct"/>rasqal_triples_source_factory</title>
<indexterm><primary>rasqal_triples_source_factory</primary></indexterm><programlisting>typedef 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;
</programlisting>
<para>
A factory that initialises <link linkend="rasqal-triples-source"><type>rasqal_triples_source</type></link> structures
to returning matches to a triple pattern.</para>
<para>

</para><variablelist role="struct">
<varlistentry>
<term><link linkend="void">void</link>&nbsp;*<structfield>user_data</structfield>;</term>
<listitem><simpara> User data for triples_source_factory.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="size-t">size_t</link>&nbsp;<structfield>user_data_size</structfield>;</term>
<listitem><simpara> Size Of <parameter>user_data</parameter> for new_triples_source.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><structfield>new_triples_source</structfield>&nbsp;()</term>
<listitem><simpara> Create a new triples source - returns non-zero on failure &lt; 0 is a 'no rdf data error', &gt; 0 is an unspecified error..
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="rasqal-set-triples-source-factory" role="function"/>rasqal_set_triples_source_factory ()</title>
<indexterm><primary>rasqal_set_triples_source_factory</primary></indexterm><programlisting><link linkend="void">void</link>        rasqal_set_triples_source_factory
                                            (<link linkend="void">void</link> (*register_fn) (rasqal_triples_source_factory *factory),
                                             <link linkend="void">void</link> *user_data);</programlisting>
<para>
Register the factory to return triple sources.
</para>
<para>
Registers the factory that returns triples sources.  Note that
there is only one of these per runtime. 
</para>
<para>
The rasqal_triples_source_factory factory method new_triples_source is
called with the user data for some query and rasqal_triples_source.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>register_fn</parameter>&nbsp;:</term>
<listitem><simpara> registration function
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>user_data</parameter>&nbsp;:</term>
<listitem><simpara> user data for registration
</simpara></listitem></varlistentry>
</variablelist></refsect2>

</refsect1>




</refentry>