## Serializer

Serializer — Serialize a photo to RDF Triples.

## Synopsis

    typedef             flickcurl_serializer;
                        flickcurl_serializer_factory;
    flickcurl_serializer * flickcurl_new_serializer         (flickcurl *fc,
                                                             void *data,
                                                             flickcurl_serializer_factory *factory);
    void                flickcurl_free_serializer           (flickcurl_serializer *serializer);
    int                 flickcurl_serialize_photo           (flickcurl_serializer *fcs,
                                                             flickcurl_photo *photo);
    enum                flickcurl_term_type;

## Description

Serialize a photo to RDF Triples.

## Details

### flickcurl_serializer

    typedef struct flickcurl_serializer_s flickcurl_serializer;

Serializer from Photo and metadata to RDF triples

### flickcurl_serializer_factory

    typedef struct {
      int version;
      void (*emit_namespace)(void* user_data, const char* prefix, size_t prefix_len, const char* uri, size_t uri_len);
      void (*emit_triple)(void* user_data,
                          const char* subject, int subject_type,
                          const char* predicate_nspace, const char* predicate_name,
                          const char *object, int object_type,
                          const char *datatype_uri);
      void (*emit_finish)(void* user_data);
    } flickcurl_serializer_factory;

Triples serializer factory

API version 1 is all that is supported.

int `version`; | API version
`emit_namespace` () | (V1) emit namespace callback
`emit_triple` () | (V1) emit a triple
`emit_finish` () | (V1) finish emitting

### flickcurl_new_serializer ()

    flickcurl_serializer * flickcurl_new_serializer         (flickcurl *fc,
                                                             void *data,
                                                             flickcurl_serializer_factory *factory);

Create a new triples serializer for generating a RDF triples representation of a Flickr photo.

The factory must contain the methods and the correct factory API version as described in flickcurl_serializer_factory

`fc` : | flickcurl object
`data` : | user data for factory methods
`factory` : | triples serializer factory
Returns : | a new serializer object or NULL on failure

### flickcurl_free_serializer ()

    void                flickcurl_free_serializer           (flickcurl_serializer *serializer);

Destructor for triples serializer object

`serializer` : | serializer object

### flickcurl_serialize_photo ()

    int                 flickcurl_serialize_photo           (flickcurl_serializer *fcs,
                                                             flickcurl_photo *photo);

Serialize photo description to RDF triples

`fcs` : | flickcurl serializer object
`photo` : | photo object
Returns : | non-0 on failure

### enum flickcurl_term_type

    typedef enum {
      FLICKCURL_TERM_TYPE_RESOURCE = 1,
      FLICKCURL_TERM_TYPE_BLANK    = 2,
      FLICKCURL_TERM_TYPE_LITERAL  = 5
    } flickcurl_term_type;

Triple part types

These are the same enumeration values as used by Raptor V2 raptor_term_type enumeration and Raptor V1 raptor_identifier_type enumeration.

`FLICKCURL_TERM_TYPE_RESOURCE` | resource/URI term
`FLICKCURL_TERM_TYPE_BLANK` | blank node/anonymous term
`FLICKCURL_TERM_TYPE_LITERAL` | literal term