File: rdf_statement.h

package info (click to toggle)
redland 1.0.7-1
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 27,592 kB
  • ctags: 12,328
  • sloc: ansic: 79,017; xml: 25,115; sh: 10,162; yacc: 5,985; lex: 3,682; makefile: 3,260; perl: 2,814; cpp: 59
file content (142 lines) | stat: -rw-r--r-- 4,711 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/* -*- Mode: c; c-basic-offset: 2 -*-
 *
 * rdf_statement.h - RDF Statement definition
 *
 * $Id: rdf_statement.h 8534 2006-01-26 04:57:33Z cmdjb $
 *
 * Copyright (C) 2000-2006, David Beckett http://purl.org/net/dajobe/
 * Copyright (C) 2000-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.
 * 
 * 
 */



#ifndef LIBRDF_STATEMENT_H
#define LIBRDF_STATEMENT_H

#ifdef LIBRDF_INTERNAL
#include <rdf_statement_internal.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif

/**
 * librdf_statement_part:
 * @LIBRDF_STATEMENT_SUBJECT: Subject of a statement.
 * @LIBRDF_STATEMENT_PREDICATE: Predicate of a statement.
 * @LIBRDF_STATEMENT_OBJECT: Object of a statement.
 * @LIBRDF_STATEMENT_ALL: All parts of a statement.
 *
 * Flags that are or-ed to indicate statement parts.
 *
 * Used in fields arguments to methods such as the public
 * librdf_statement_encode_parts() librdf_statement_decode_parts()
 * librdf_new_stream_from_node_iterator() and the internal
 * librdf_storage_node_stream_to_node_create()
 */
typedef enum {
  LIBRDF_STATEMENT_SUBJECT   = 1 << 0,
  LIBRDF_STATEMENT_PREDICATE = 1 << 1,
  LIBRDF_STATEMENT_OBJECT    = 1 << 2,

  /* must be a combination of all of the above */
  LIBRDF_STATEMENT_ALL       = (LIBRDF_STATEMENT_SUBJECT|
                                LIBRDF_STATEMENT_PREDICATE|
                                LIBRDF_STATEMENT_OBJECT)
} librdf_statement_part;


/* initialising functions / constructors */

/* Create a new Statement. */
REDLAND_API
librdf_statement* librdf_new_statement(librdf_world* world);

/* Create a new Statement from an existing Statement - CLONE */
REDLAND_API
librdf_statement* librdf_new_statement_from_statement(librdf_statement* statement);
/* Create a new Statement from existing Nodes */
REDLAND_API
librdf_statement* librdf_new_statement_from_nodes(librdf_world *world, librdf_node* subject, librdf_node* predicate, librdf_node* object);

/* Init a statically allocated statement */
REDLAND_API
void librdf_statement_init(librdf_world *world, librdf_statement *statement);

/* Clear a statically allocated statement */
REDLAND_API
void librdf_statement_clear(librdf_statement *statement);

/* destructor */
REDLAND_API
void librdf_free_statement(librdf_statement* statement);


/* functions / methods */

REDLAND_API
librdf_node* librdf_statement_get_subject(librdf_statement *statement);
REDLAND_API
void librdf_statement_set_subject(librdf_statement *statement, librdf_node *node);

REDLAND_API
librdf_node* librdf_statement_get_predicate(librdf_statement *statement);
REDLAND_API
void librdf_statement_set_predicate(librdf_statement *statement, librdf_node *node);

REDLAND_API
librdf_node* librdf_statement_get_object(librdf_statement *statement);
REDLAND_API
void librdf_statement_set_object(librdf_statement *statement, librdf_node *node);

/* if statement has all fields */
REDLAND_API
int librdf_statement_is_complete(librdf_statement *statement);

/* convert to a string */
REDLAND_API
unsigned char *librdf_statement_to_string(librdf_statement *statement);
/* print it prettily */
REDLAND_API
void librdf_statement_print(librdf_statement *statement, FILE *fh);

/* compare two statements */
REDLAND_API
int librdf_statement_equals(librdf_statement* statement1, librdf_statement* statement2);
/* match statement against one with partial content */
REDLAND_API
int librdf_statement_match(librdf_statement* statement, librdf_statement* partial_statement);

/* serialising/deserialising */
REDLAND_API
size_t librdf_statement_encode(librdf_statement* statement, unsigned char *buffer, size_t length);
REDLAND_API
size_t librdf_statement_encode_parts(librdf_statement* statement, librdf_node* context_node, unsigned char *buffer, size_t length, librdf_statement_part fields);
REDLAND_API
size_t librdf_statement_decode(librdf_statement* statement, unsigned char *buffer, size_t length);
REDLAND_API
size_t librdf_statement_decode_parts(librdf_statement* statement, librdf_node** context_node, unsigned char *buffer, size_t length);


#ifdef __cplusplus
}
#endif

#endif