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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
|
/* -*- Mode: c; c-basic-offset: 2 -*-
*
* raptor.h - Redland Parser Toolkit for RDF (Raptor) interfaces and definition
*
* $Id$
*
* Copyright (C) 2000-2001 David Beckett - http://purl.org/net/dajobe/
* Institute for Learning and Research Technology - http://www.ilrt.org/
* University of Bristol - http://www.bristol.ac.uk/
*
* This package is Free Software or Open Source available under the
* following licenses (these are alternatives):
* 1. GNU Lesser General Public License (LGPL)
* 2. GNU General Public License (GPL)
* 3. Mozilla Public License (MPL)
*
* See LICENSE.html or LICENSE.txt at the top of this package for the
* full license terms.
*
*/
#ifndef RAPTOR_H
#define RAPTOR_H
#ifdef __cplusplus
extern "C" {
#endif
#ifdef WIN32
# ifdef RAPTOR_INTERNAL
# define RAPTOR_API _declspec(dllexport)
# else
# define RAPTOR_API _declspec(dllimport)
# endif
#else
# define RAPTOR_API
#endif
typedef void* raptor_uri;
/* Public structure */
typedef struct raptor_parser_s raptor_parser;
typedef enum {
RAPTOR_IDENTIFIER_TYPE_UNKNOWN, /* Unknown type - illegal */
RAPTOR_IDENTIFIER_TYPE_RESOURCE, /* Resource URI (e.g. rdf:about) */
RAPTOR_IDENTIFIER_TYPE_ANONYMOUS, /* _:foo N-Triples, or generated */
RAPTOR_IDENTIFIER_TYPE_PREDICATE, /* Predicate URI */
RAPTOR_IDENTIFIER_TYPE_ORDINAL, /* rdf:li, rdf:_<n> etc. */
RAPTOR_IDENTIFIER_TYPE_LITERAL, /* regular literal */
RAPTOR_IDENTIFIER_TYPE_XML_LITERAL /* rdf:parseType="Literal" */
} raptor_identifier_type;
typedef enum { RAPTOR_URI_SOURCE_UNKNOWN, RAPTOR_URI_SOURCE_NOT_URI, RAPTOR_URI_SOURCE_ELEMENT, RAPTOR_URI_SOURCE_ATTRIBUTE, RAPTOR_URI_SOURCE_ID, RAPTOR_URI_SOURCE_URI, RAPTOR_URI_SOURCE_GENERATED, RAPTOR_URI_SOURCE_BLANK_ID } raptor_uri_source;
typedef struct {
raptor_uri *uri;
const char *file;
int line;
int column;
int byte;
} raptor_locator;
typedef enum {
RAPTOR_FEATURE_SCANNING,
RAPTOR_FEATURE_ASSUME_IS_RDF,
RAPTOR_FEATURE_ALLOW_NON_NS_ATTRIBUTES,
RAPTOR_FEATURE_ALLOW_OTHER_PARSETYPES
} raptor_feature;
typedef struct {
raptor_identifier_type type;
raptor_uri *uri;
raptor_uri_source uri_source;
const unsigned char *id;
int ordinal;
int is_malloced;
} raptor_identifier;
/* Returned by statement_handler */
typedef struct {
const void *subject;
raptor_identifier_type subject_type;
const void *predicate;
raptor_identifier_type predicate_type;
const void *object;
raptor_identifier_type object_type;
raptor_uri *object_literal_datatype;
const unsigned char *object_literal_language;
} raptor_statement;
typedef void (*raptor_message_handler)(void *user_data, raptor_locator* locator, const char *message);
typedef void (*raptor_statement_handler)(void *user_data, const raptor_statement *statement);
typedef raptor_uri* (*raptor_container_test_handler)(raptor_uri *element_uri);
/* Public functions */
RAPTOR_API void raptor_init(void);
RAPTOR_API void raptor_finish(void);
/* Create */
/* OLD API */
RAPTOR_API raptor_parser* raptor_new(void);
/* NEW API */
RAPTOR_API raptor_parser* raptor_new_parser(const char *name);
RAPTOR_API int raptor_start_parse(raptor_parser *rdf_parser, raptor_uri *uri);
/* Destroy */
/* OLD API */
RAPTOR_API void raptor_free(raptor_parser *rdf_parser);
/* NEW API */
void raptor_free_parser(raptor_parser* parser);
/* Handlers */
RAPTOR_API void raptor_set_fatal_error_handler(raptor_parser* parser, void *user_data, raptor_message_handler handler);
RAPTOR_API void raptor_set_error_handler(raptor_parser* parser, void *user_data, raptor_message_handler handler);
RAPTOR_API void raptor_set_warning_handler(raptor_parser* parser, void *user_data, raptor_message_handler handler);
RAPTOR_API void raptor_set_statement_handler(raptor_parser* parser, void *user_data, raptor_statement_handler handler);
RAPTOR_API void raptor_print_statement(const raptor_statement * const statement, FILE *stream);
RAPTOR_API void raptor_print_statement_as_ntriples(const raptor_statement * statement, FILE *stream);
RAPTOR_API void raptor_print_statement_detailed(const raptor_statement * statement, int detailed, FILE *stream);
RAPTOR_API raptor_locator* raptor_get_locator(raptor_parser* rdf_parser);
/* Parsing functions */
int raptor_parse_chunk(raptor_parser* rdf_parser, const unsigned char *buffer, size_t len, int is_end);
RAPTOR_API int raptor_parse_file(raptor_parser* rdf_parser, raptor_uri *uri, raptor_uri *base_uri);
/* Utility functions */
RAPTOR_API void raptor_print_locator(FILE *stream, raptor_locator* locator);
RAPTOR_API int raptor_format_locator(char *buffer, size_t length, raptor_locator* locator);
RAPTOR_API void raptor_set_feature(raptor_parser *parser, raptor_feature feature, int value);
/* URI functions */
RAPTOR_API raptor_uri* raptor_new_uri(const char *uri_string);
RAPTOR_API raptor_uri* raptor_new_uri_from_uri_local_name(raptor_uri *uri, const char *local_name);
RAPTOR_API raptor_uri* raptor_new_uri_relative_to_base(raptor_uri *base_uri, const char *uri_string);
RAPTOR_API raptor_uri* raptor_new_uri_from_id(raptor_uri *base_uri, const unsigned char *id);
RAPTOR_API raptor_uri* raptor_new_uri_for_rdf_concept(const char *name);
RAPTOR_API void raptor_free_uri(raptor_uri *uri);
RAPTOR_API int raptor_uri_equals(raptor_uri* uri1, raptor_uri* uri2);
RAPTOR_API raptor_uri* raptor_uri_copy(raptor_uri *uri);
RAPTOR_API char* raptor_uri_as_string(raptor_uri *uri);
/* Make an xml:base-compatible URI from an existing one */
RAPTOR_API raptor_uri* raptor_new_uri_for_xmlbase(raptor_uri* old_uri);
/* Identifier functions */
RAPTOR_API raptor_identifier* raptor_new_identifier(raptor_identifier_type type, raptor_uri *uri, raptor_uri_source uri_source, unsigned char *id);
RAPTOR_API void raptor_init_identifier(raptor_identifier *identifier, raptor_identifier_type type, raptor_uri *uri, raptor_uri_source uri_source, unsigned char *id);
RAPTOR_API int raptor_copy_identifier(raptor_identifier *dest, raptor_identifier *src);
RAPTOR_API void raptor_free_identifier(raptor_identifier *identifier);
RAPTOR_API int raptor_print_ntriples_string(FILE *stream, const char *string, const char delim);
/* raptor_uri.c */
RAPTOR_API void raptor_uri_resolve_uri_reference (const char *base_uri, const char *reference_uri, char *buffer, size_t length);
RAPTOR_API char *raptor_uri_filename_to_uri_string(const char *filename);
RAPTOR_API char *raptor_uri_uri_string_to_filename(const char *uri_string);
RAPTOR_API int raptor_uri_is_file_uri(const char* uri_string);
RAPTOR_API void raptor_uri_init(void);
typedef raptor_uri* (*raptor_new_uri_func) (void *context, const char *uri_string);
typedef raptor_uri* (*raptor_new_uri_from_uri_local_name_func) (void *context, raptor_uri *uri, const char *local_name);
typedef raptor_uri* (*raptor_new_uri_relative_to_base_func) (void *context, raptor_uri *base_uri, const char *uri_string);
typedef raptor_uri* (*raptor_new_uri_for_rdf_concept_func) (void *context, const char *name);
typedef void (*raptor_free_uri_func) (void *context, raptor_uri *uri);
typedef int (*raptor_uri_equals_func) (void *context, raptor_uri* uri1, raptor_uri* uri2);
typedef raptor_uri* (*raptor_uri_copy_func) (void *context, raptor_uri *uri);
typedef char* (*raptor_uri_as_string_func)(void *context, raptor_uri *uri);
typedef struct {
/* constructors */
raptor_new_uri_func new_uri;
raptor_new_uri_from_uri_local_name_func new_uri_from_uri_local_name;
raptor_new_uri_relative_to_base_func new_uri_relative_to_base;
raptor_new_uri_for_rdf_concept_func new_uri_for_rdf_concept;
/* destructor */
raptor_free_uri_func free_uri;
/* methods */
raptor_uri_equals_func uri_equals;
raptor_uri_copy_func uri_copy; /* well, copy constructor */
raptor_uri_as_string_func uri_as_string;
int initialised;
} raptor_uri_handler;
RAPTOR_API void raptor_uri_set_handler(raptor_uri_handler *handler, void *context);
RAPTOR_API void raptor_uri_get_handler(raptor_uri_handler **handler, void **context);
#define RAPTOR_RDF_MS_URI "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
#define RAPTOR_RDF_SCHEMA_URI "http://www.w3.org/2000/01/rdf-schema#"
#ifdef __cplusplus
}
#endif
#endif
|