12003-12-31  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
2
3	* utils/rdfproc.c: tweak help text
4
5	* librdf/rdf_parser.h:
6	Note parser syntax name, not raptor factory name, which is in the
7	raptor parser context.
8
9	* librdf/rdf_parser_raptor.c:
10	Separate registered name from raptor parser name for all calls of
11	raptor_new_parser.
12	(librdf_parser_raptor_init): Convert the legacy parser name
13	'raptor' into 'rdfxml' internally.
14	(librdf_parser_raptor_constructor): Use raptor_parsers_enumerate
15	and hard code mime types, URIs here for now.  Can use
16	raptor_syntaxes_enumerate later.
17
18	* raptor/raptor_rss.c, raptor/raptor_parse.c,
19	raptor/ntriples_parse.c, raptor/n3_parser.y: Use expanded
20	raptor_parser_register_factory with mime_type and uri_string args
21	where appropriate.
22
23	* raptor/libraptor.3, raptor/raptor.h: Added raptor_syntaxes_enumerate
24
25	* raptor/raptor_general.c (raptor_parser_register_factory):
26	Add mime_type and uri_string args, both optional.
27	(raptor_syntaxes_enumerate): Added to get syntax name, label,
28	mime_type or uri_string - all optional.
29	(raptor_parsers_enumerate): Uses raptor_syntaxes_enumerate.
30
31	* raptor/raptor_internal.h: Store parser mime_type, URI in
32	raptor_parser_factory Update raptor_parser_register_factory to
33	take mime_type, uri_string args.
34
35	* utils/rdfproc.c: tweak help formatting
36
37	* raptor/configure.ac: Bumped version to 1.2.0
38
39	* raptor/configure.ac:
40	Update RAPTOR_LIBTOOL_VERSION to reflect interfaces added,
41	none removed giving current 2:0:1
42
43	* raptor/libraptor.3: nroff/man style tweaks
44
45	* raptor/libraptor.3: Style
46
472003-12-30  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
48
49	* raptor/configure.ac: words
50
51	* raptor/configure.ac:
52	Make flex version warnings mention N-Triples Plus more
53
54	* librdf/rdf_model_storage.c, librdf/rdf_model.h,
55	librdf/rdf_model.c (librdf_model_get_storage): Added, with factory
56	method to match - optional.  The model_storage implementation
57	implements it.
58
592003-12-29  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
60
61	* utils/rdf-tree.c, utils/rdf-load.c: indented
62
63	* raptor/libraptor.3: bump date
64
65	* raptor/raptor_stringbuffer.c (main):
66	Do not free as_string returned strings
67
68	* raptor/raptor_stringbuffer.c: brackets
69
70	* raptor/raptor_stringbuffer.c (raptor_free_stringbuffer):
71	Free any constructed string.
72
73	* configure.ac: Add AC_DEFINE for local MD5, SHA1, RIPEMD160
74
75	* utils/rdfproc.c: Tweak help text to look better without getopt_long
76
77	* librdf/rdf_serializer_rdfxml.c:
78	Some more unsigned char fixes for URIs
79	(librdf_serializer_print_statement_as_rdfxml): Try harder to find a
80	maximal length legal property element name; now works for
81	foaf:mbox_sha1sum - patch from Morten
82
83	* docs/api.sgml.in, docs/Makefile.am:
84	Added storage_mysql storage_tstore
85
86	* raptor/raptor_xml_writer.c:
87	Use raptor_stringbuffer to better grow the output cdata.
88
89	* raptor/raptor_stringbuffer.c: stringbuffer now uses unsigned char
90	Removed raptor_new|free_stringbuffer_node - used once, now inlined.
91	(raptor_stringbuffer_append_string_common): Added with
92	common append code merged here.
93	(raptor_stringbuffer_append_counted_string,
94	raptor_stringbuffer_append_string): Added do_copy arg.
95	(main): Test code updated for api changes.
96
97	* raptor/raptor_internal.h:
98	Added prototypes for raptor_stringbuffer class to internal API
99
100	* raptor/Makefile.am:
101	Re-added raptor_stringbuffer.c and raptor_stringbuffer_test
102
1032003-12-27  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
104
105	* librdf/rdf_uri.c, librdf/rdf_stream.c, librdf/rdf_statement.c, librdf/rdf_query.c, librdf/rdf_node.c, librdf/rdf_model.c, librdf/rdf_iterator.c, librdf/rdf_hash.c:
106	More C++ cast fixes mostly near URI and literal strings in test
107	code, the main function.
108
109	* librdf/Makefile.am: Added rdf_digest_sha1.c
110
111	* librdf/rdf_digest_sha1.c: SHA1 digest code
112
1132003-12-23  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
114
115	* raptor/rapper.1: Updated for 1.1.0, -a is gone.  Added ntriples-plus
116
117	* raptor/libraptor.3: parser name is ntriples-plus
118
119	* raptor/libraptor.3: Updated for 1.1.0
120
121	* raptor/raptor.h:
122	remove raptor_namespaces_end_namespace - does not exist.
123
1242003-12-22  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
125
126	* raptor/Makefile.am:
127	Remove raptor_stringbuffer.c/test from dist - not used at present.
128
129	* raptor/configure.ac:
130	Added --with-xml-names to choose XML 1.0 name checking (default) or 1.1
131
132	* raptor/raptor_utf8.c (raptor_unicode_is_namestartchar):
133	Update to Namespaces in XML 1.1 WD
134	http://www.w3.org/TR/2003/PR-xml-names11-20031105/#NT-NCNameStartChar
135	and Extensible Markup Language (XML) 1.1 PR
136	http://www.w3.org/TR/2003/PR-xml11-20031105/#NT-NameStartChar
137	(raptor_unicode_is_namechar): Updated comment, no code changes
138	needed.
139
140	* raptor/tests/ntriplesplus/Makefile.am: No check-warn-rdf tests yet
141
142	* raptor/raptor_utf8.c:
143	Use RAPTOR_NFC_CHECK to wrap any use of the glib g_utf8_normalize.
144
145	* raptor/configure.ac: Define RAPTOR_NFC_CHECK when NFC check is needed
146
147	* raptor/configure.ac:
148	Added --disable-nfc-check to disable Unicode NFC checking even if a
149	suitable glib is present and providing it.  Otherwise, autodetects
150	as before.
151
1522003-12-19  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
153
154	* raptor/examples/Makefile.am: Removed REDLAND_LIBS
155
1562003-12-18  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
157
158	* perl/Makefile.PL: OSX old perl before 5.8
159
160	* perl/Makefile.PL:
161	Another attempt to handle MakeMaker changes since perl5.8
162
163	* perl/Makefile.am:
164	Compile perl without the -W flags; it's just too noisy.
165
166	* librdf/redland.spec.in: Don't install perl twice.
167
1682003-12-17  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
169
170	* librdf/rdf_serializer_rdfxml.c (rdf_serializer_rdfxml_print_as_xml_content):
171	Redland strings are always UTF-8 and for now, the output encoding
172	is always UTF-8 so don't encode high bits, emit them.
173
174	* librdf/rdf_serializer_rdfxml.c: o
175
176	* librdf/rdf_serializer_rdfxml.c:
177	(librdf_serializer_rdfxml_serialize_model) Free rdf:RDF qname.
178
179	* raptor/raptor_parse.c, librdf/rdf_parser_raptor.c:
180	Update for changed raptor_generate_id handler calls - no const.
181
182	* raptor/raptor_general.c, raptor/raptor.h, raptor/raptor_internal.h:
183	raptor_generate_id handler does not take const string
184
185	* raptor/raptor_general.c, raptor/raptor.h, raptor/raptor_internal.h:
186	raptor_generate_id returns non const
187
188	* raptor/ntriples_parse.c (raptor_ntriples_parse_line):
189	Casts, unsigned char* for blank node IDs.
190
191	* raptor/ntriples_parse.c (raptor_ntriples_parse_line):
192	Enforce predicate must be URIref
193
1942003-12-16  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
195
196	* perl/t/test1.t: Don't use last when not in a loop
197
198	* raptor/ntriples_parse.c (raptor_ntriples_parse_line):
199	Pass blank node identifier generation
200	through raptor_generate_id.  Rewrite returns into setting rc and jump
201	to cleanup to ensure allocated blank node IDs are freed.
202
203	* utils/Makefile.am: Added EXTRA_PROGRAMS to CLEANFILES
204
205	* utils/rdf-load.c, utils/rdf-tree.c:
206	Put explicit \n in multiline strings
207
208	* utils/rdf-tree.c:
209	Updates from Morten to use openssl lhash - this isn't portable.
210
211	* librdf/rdf_storage_mysql.c:
212	(librdf_storage_mysql_context_serialise_next_statement):
213	Fixes for over-eager use of multi-line string - add spaces before
214	the newlines.
215	Correct subject and object node creations.
216
217	* librdf/redland.pc.in: Add @LIBRDF_LDFLAGS@ @LIBRDF_LIBS@ to libs
218
219	* librdf/Makefile.am:
220	Use LIBRDF_EXTERNAL_CPPFLAGS, LIBRDF_EXTERNAL_LIBS
221
222	* redland-src-config.in: Put redland cflags, links first
223
224	* redland-config.in: Use LIBRDF_EXTERNAL_CPPFLAGS, LIBRDF_EXTERNAL_LIBS
225
226	* configure.ac: Added LIBRDF_EXTERNAL_CPPFLAGS,
227	LIBRDF_EXTERNAL_LIBS used for system raptor
228
229	* raptor/raptor.pc.in: Restore LDFLAGS, LIBS
230
231	* perl/Makefile.PL: Don't need MEM_LIBS in OBJECT
232
233	* utils/rdfproc.1: store to store-name in header
234
235	* utils/rdfproc.c: Added file|uri to parsing help
236
237	* utils/rdfproc.1: Document -n, -s, -t and parsing now turns files
238	into URIs if they exist.
239
240	* raptor/raptor-src-config.in: Removed --static-libs
241
242	* utils/rdfproc.c:
243	Added -n new - default is not to overwrite, i.e. parsing now appends
244	Added -s storage
245	Added -t storage-options
246	Parsing now turns files into URIs if they exist.
247
2482003-12-15  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
249
250	* php/test.php: tidy prints
251
252	* librdf/redland.pc.in: redland.pc.in
253
254	* php/test.php:
255	Better test code.  Serializing crashes it - to fix later.
256
257	* php/Makefile.am:
258	Reorder compile args so PHP libs are first and overridden if need be.
259
260	* redland-src-config.in: Kill --static-libs
261	Use @with_raptor@ to pick either raptor-src-config or raptor-config
262
263	* configure.ac: AC_SUBST with_raptor
264
265	* php/Makefile.am:
266	Apply redland_wrap.c.patch when building redland_wrap.c
267	Use  -d extension_dir=. for test-php
268
269	* php/redland_wrap.c.patch:
270	Patch to PHP wrapper to return empty string not C NULL
271
272	* librdf/Makefile.am: Install redland.pc to libdir/pkgconfig
273
274	* librdf/redland.spec.in: Updates:
275	 - require raptor 1.1.0
276	 - require libxml 2.4.0 or newer
277	 - added pkgconfig redland.pc
278	 - split redland/devel package shared libs correctly
279
280	* configure.ac: Added librdf/redland.pc
281
282	* librdf/Makefile.am: Added redland.pc.in
283
284	* raptor/raptor.pc.in: Just link -lraptor
285
286	* raptor/configure.ac: Remove use of have_redland for expat
287	sources (no longer shipped with redland anyway)
288
289	* raptor/configure.ac: Remove redland source check.
290
291	* configure.ac, Makefile.am:
292	Split SD subdirs into SD_PRE (must be made before librdf)
293	and SD_POST (after).  raptor goes into PRE so that it is
294	both compiled and installed before librdf.
295
296	* raptor/Makefile.am: No need for librdf.la rule
297
298	* raptor/rdfdump.c, raptor/raptor_stringbuffer.c,
299	raptor/raptor_set.c, raptor/raptor_namespace.c,
300	raptor/Makefile.am: Remove all RAPTOR_IN_REDLAND code use of
301	REDLAND_LIBS, REDLAND_CFLAGS.  Now the test and rdfdump programs
302	always just use raptor alone.
303
3042003-12-14  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
305
306	* perl/Makefile.am: Remove use of prefix; install where perl wants it
307
308	* perl/Makefile.PL:
309	Try again with the MakeMaker PM hash.  Remove double RDF/RDF
310
311	* librdf/rdf_serializer_rdfxml.c (librdf_serializer_rdfxml_terminate):
312	Allow raptor_free_namespaces to
313	free the entire stack, including pcontext->rdf_ns
314
315	* perl/Makefile.am, perl/update-perl-api.pl: Remove old API updater
316
317	* librdf/rdf_node.h:
318	librdf_node_get_literal_value_as_latin1 returning char*
319
320	* librdf/rdf_node.c:
321	(librdf_node_get_literal_value_as_latin1) Returning char*
322
323	* examples/example4.c:
324	Removed body of code since it was turned into rdfproc.
325
326	* librdf/rdf_parser.h:
327	Update librdf_parser_parse_string_as_stream prototype
328
329	* librdf/rdf_model.h: Update librdf_model_query_string prototype
330
331	* librdf/rdf_storage_mysql.c:
332	(librdf_storage_mysql_node_hash) Casts for node char const strings.
333
334	* utils/Makefile.am:
335	Add mysql-utils target, don't build the mysql utilities by default.
336
337	* utils/rdf-digest.c, utils/rdf-load.c, utils/rdf-tree.c:
338	Redland MySQL storage utilities by Morten Frederiksen
339
340	* utils/rdfproc.c:
341	Updates for raptor changes - all URI strings are unsigned char*
342	Update URI APIs here to match.
343	Update all use of literal (UTF-8) strings to unsigned char* also.
344	Add more casts to make C++ happy especially near string functions
345	and malloc.
346
347	* utils/Makefile.am: Add redland libs, cppflags, cflags
348
349	* librdf/rdf_storage_mysql.c:
350	(librdf_storage_mysql_node_hash) Fix to created digest to distinguish
351	URIs 'R', literals 'L' and blank node identifiers 'B' in database.
352	(librdf_storage_mysql_context_serialise_next_statement): Call error
353	functions with the right world value.
354
355	* examples/example4.c, examples/example3.c, examples/example2.c, examples/example1.c, librdf/rdf_uri.h, librdf/rdf_uri.c, librdf/rdf_stream.c, librdf/rdf_storage_mysql.c, librdf/rdf_storage_list.c, librdf/rdf_storage.c, librdf/rdf_statement.h, librdf/rdf_statement.c, librdf/rdf_serializer_rdfxml.c, librdf/rdf_serializer_raptor.c, librdf/rdf_serializer.h, librdf/rdf_serializer.c, librdf/rdf_query_triples.c, librdf/rdf_query.h, librdf/rdf_query.c, librdf/rdf_parser_raptor.c, librdf/rdf_parser.h, librdf/rdf_parser.c, librdf/rdf_node.h, librdf/rdf_node.c, librdf/rdf_model_storage.c, librdf/rdf_model.h, librdf/rdf_model.c, librdf/rdf_iterator.c, librdf/rdf_init.h, librdf/rdf_init.c, librdf/rdf_hash_memory.c, librdf/rdf_hash_bdb.c, librdf/rdf_hash.h, librdf/rdf_hash.c, librdf/rdf_concepts.c:
356	Updates for raptor changes - all URI strings are unsigned char*
357	Update URI APIs here to match.
358	Update all use of literal (UTF-8) strings to unsigned char* also.
359	Add more casts to make C++ happy especially near string functions
360	and malloc.
361
362	* raptor/raptor_general.c (raptor_print_statement_part_as_ntriples):
363	Update call of
364	raptor_print_ntriples_string
365
366	* raptor/raptor.h: Update raptor_print_ntriples_string prototype
367
368	* raptor/raptor_general.c (raptor_print_ntriples_string):
369	Take unsigned const char*
370
3712003-12-08  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
372
373	* configure.ac: mysql version reporting
374
375	* configure.ac: make --with-threestore, --with-mysql take CONFIG|yes|no
376
377	* configure.ac: Add BDB 4.2 to the list.
378	Fixes for 3store (--with-threestore) else search for 3store-config;
379	add glib to cflags/libs using pkg-config.
380	Report raptor version.
381	Report triple stores found.
382
3832003-12-06  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
384
385	* librdf/rdf_uri.h, librdf/rdf_uri.c, librdf/rdf_parser_raptor.c:
386	Updates for raptor API use of unsigned char* for URI strings.
387	Change redland URIs to take/return unsigned char* for URI strings
388
389	* librdf/rdf_hash.c (librdf_hash_print): replaced fprintf
390
391	* raptor/Makefile.am:
392	Narrower yyerrlabl fix since bison 1.875a no longer requires it
393
394	* raptor/examples/grapper.c:
395	Casts and updates to use URI strings from raptor as unsigned char*
396	and converting to/from gchar*
397
398	* raptor/rdfdump.c, raptor/raptor_xml_writer.c, raptor/raptor_xml.c, raptor/raptor_www_libxml.c, raptor/raptor_www.c, raptor/raptor_uri.c, raptor/raptor_sax2.c, raptor/raptor_rss.c, raptor/raptor_parse.c, raptor/raptor_namespace.c, raptor/n3_parser.y, raptor/n3_lexer.l:
399	Lots of casts for str* function args, return values between unsigned
400	char* as used for UTF8 and URI strings and char* used by str* functions.
401	Some further casts for strings from XML.
402
403	* raptor/raptor_www_test.c (write_bytes_fh): No return value.
404	(main) Test code casts unsigned char* for URI strings
405	Fix write_content_type and write_bytes_fh set handler methods.
406
407	* raptor/raptor_utf8.c (raptor_unicode_char_to_utf8):
408	unsigned char* arg.
409	(raptor_utf8_is_nfc): unsigned int, cast for unsigned char*
410
411	* raptor/raptor_sequence.c (raptor_sequence_ensure):
412	Use void** not void*.  C++ cares.
413	(main): Test code casts to void* for args.
414
415	* raptor/raptor_qname.c (raptor_qname_string_to_uri):
416	cast for signed/unsigned int
417	comparison.
418
419	* raptor/raptor_locator.c (raptor_format_locator):
420	Use raptor_uri_as_counted_string to save a strlen.
421
422	* raptor/raptor_identifier.c:
423	(raptor_identifier_print) fputs arg cast [function for RAPTOR_DEBUG only]
424
425	* raptor/raptor_general.c (raptor_parsers_enumerate): Unsigned int.
426	(raptor_parse_uri_write_bytes): unsigned char* cast.
427	Declare raptor_xml_literal_datatype_uri_string.
428	(raptor_print_statement_detailed): Replace several fprintf with fputs
429	and fputc.
430	(raptor_print_ntriples_string): Use unsigned long/size_t for counts.
431	(raptor_statement_part_as_counted_string): unsigned char*
432	Use raptor_xml_literal_datatype_uri_string.
433	(raptor_statement_part_as_string): unsigned char*
434	(raptor_print_statement_part_as_ntriples): unsigned char*.  Replace
435	several fprintf with fputs and fputc.
436	Use raptor_xml_literal_datatype_uri_string
437	(raptor_default_generate_id_handler): Casts for str* functions
438	(raptor_check_ordinal): unsigned char*
439
440	* raptor/ntriples_parse.c:
441	(raptor_ntriples_generate_statement,raptor_ntriples_string_as_utf8_string,
442	raptor_ntriples_parse_line):
443	Updated to take/return unsigned char* args and internals.  Update
444	raptor_uri calls for similar changes.
445	Use raptor_xml_literal_datatype_uri_string
446	Lots of casts for str* functions char* arguments.
447
448	* raptor/Makefile.am:
449	Remove maintainer only n3 lex/yacc rules (flex/bison)
450	Post process the bison output to remove unused label to make g++ happier.
451
452	* raptor/raptor_internal.h:
453	Added raptor_xml_literal_datatype_uri_string for the RDF datatype
454	literal URI string, used several times.
455	raptor_check_ordinal takes unsigned char*
456	A couple of lengths, counts become unsigned int.
457	raptor_unicode_char_to_utf8, raptor_format_sax2_element,
458	raptor_xml_writer_cdata, raptor_xml_writer_comment,
459	raptor_xml_writer_as_string changed to
460	take/return unsigned char* for UTF8 strings.
461
462	* raptor/raptor.h:
463	raptor_new_uri_func, raptor_new_uri_from_local_name_func,
464	raptor_new_uri_relative_to_base_func, raptor_uri_as_string_func,
465	raptor_uri_as_counted_string_func URI factory methods
466	changed to all take/return unsigned char* for URI strings
467	raptor_statement_part_as_counted_string,
468	raptor_statement_part_as_string,
469	raptor_new_uri, raptor_new_uri_from_uri_local_name,
470	raptor_new_uri_relative_to_base, raptor_uri_as_string,
471	raptor_uri_as_counted_string
472	URI methods changed to take/return unsigned char* for URI strings
473	raptor_ntriples_string_as_utf8_string changed to return unsigned
474	char* for UTF8 string
475	raptor_uri_resolve_uri_reference, raptor_uri_filename_to_uri_string,
476	raptor_uri_uri_string_to_filename,
477	raptor_uri_uri_string_to_filename_fragment, raptor_uri_is_file_uri
478	Changed to use unsigned char* for URI strings, char* for filenames
479
4802003-12-01  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
481
482	* raptor/raptor_set.c (raptor_set_stats_print): Debug printing tweak.
483
4842003-11-28  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
485
486	* raptor/raptor_internal.h:
487	raptor_check_ordinal with now unsigned char* arg
488	raptor_sax2 content_cdata now unsigned char*
489
490	* raptor/raptor_general.c (raptor_check_ordinal): unsigned char *name
491
492	* raptor/raptor_parse.c: Lots of char/unsigned char casting.
493
494	* raptor/n3_common.h: Undo n3_syntax_error back to raptor_parser arg.
495
496	* raptor/n3_parser.y: (n3_parser_error) aka yyerror; take a void arg.
497
498	* raptor/n3_common.h:
499	The n3_syntax_error aka yyerror function takes a void arg.
500
501	* raptor/n3_parser.y: Casts for rdf_parser, strings.
502
503	* raptor/n3_lexer.l:
504	Define INPUT_FN as yyinput (C++) or input (otherwise)
505	Add more casts for C++ near rdf_parser, yytext.
506	(copy_token): More casts for malloc and string functions.
507	(copy_string_token): More size_t, casts.
508
509	* raptor/ntriples_parse.c (raptor_ntriples_term):
510	Use a size_t; cast for C++.
511
512	* raptor/ntriples_parse.c (raptor_ntriples_term_valid,raptor_ntriples_term):
513	Change
514	argument names from class to term_class to avoid C++ keyword.
515
516	* raptor/raptor_getopt.h: Protect prototypes for C++
517
518	* raptor/raptor_stringbuffer.c: casts for RAPTOR_*ALLOC returns
519
520	* raptor/n3_parser.y: oops, raptort -> raptor
521
522	* raptor/n3_parser.y: another cast for RAPTOR_MALLOC return
523
524	* raptor/n3_parser.y: casts for RAPTOR_CALLOC returns
525
526	* raptor/configure.ac:
527	Move adding pkg-config glib2.0 cppflags/libs till after the other
528	libraries since that's more likely to be system wide and least
529	effect libxml2, other libraries that might be elsewhere.  Mostly
530	affects OSX which is more sensitive to link order.
531
532	* raptor/raptor_stringbuffer.c (main): declare at start of block
533
534	* raptor/configure.ac: Check for libxml/SAX2.h - the new SAX2 API
535
536	* raptor/raptor_libxml.c:
537	Added a pile of libxml2_* macros to use the libxml2 SAX2 functions
538	when they are present, otherwise the SAX1.  Not using the SAX2 parts
539	of the libxml2 API at present.
540
541	* raptor/strcasecmp.c: Add debug message arg casts.
542
543	* raptor/configure.ac:
544	Include libxml/parser.h when checking for other libxml2 headers
545
546	* raptor/ntriples_parse.c: Add some debug message arg casts.
547	(raptor_ntriples_parse_chunk): At end of input, check that there is
548	no remaining junk.
549
550	* raptor/ntriples_parse.c (raptor_ntriples_parse_chunk):
551	Fix line counting problems when \r\n
552	crosses a buffer or when a line ends at the end of a buffer.
553	last_char recorded in state.
554
555	* raptor/raptor_stringbuffer.c (main): Free returned strings.
556
557	* raptor/Makefile.am:
558	Added raptor_stringbuffer.c raptor_stringbuffer_test code
559
560	* raptor/raptor.h: Added raptor_stringbuffer.
561
562	* raptor/raptor_stringbuffer.c: Stringbuffer class for growing strings
563
564	* raptor/raptor_libxml.c (raptor_libxml_init):
565	With libxml2 use raptor_xml_characters_handler
566	for sax->characters.
567
568	* raptor/raptor_parse.c (raptor_cdata_grammar): Added is_cdata arg.
569	(raptor_xml_characters_handler): Added, calling raptor_cdata_grammar.
570	(raptor_xml_cdata_handler): Updated to call raptor_cdata_grammar with
571	is_cdata=1.
572	(raptor_xml_parse_init): With expat use raptor_xml_characters_handler
573	with XML_SetCharacterDataHandler.
574	(raptor_cdata_grammar): Tidy error reporting; do not use
575	raptor_xml_writer_as_string for a simple print.
576
577	* raptor/raptor_internal.h:
578	Added raptor_xml_characters_handler prototype.
579
5802003-11-26  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
581
582	* perl/Makefile.PL:
583	List the .pm files explicitly since perl 5.8.1 broke scanning
584
5852003-11-25  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
586
587	* raptor/manifest.pl: Add withdrawn tests check
588
5892003-11-23  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
590
591	* raptor/tests/ntriplesplus/Makefile.am:
592	Added more N-Triples Plus tests (1-7) and bad (0-3)
593
594	* raptor/tests/ntriplesplus/test-07.out, raptor/tests/ntriplesplus/test-07.ntp, raptor/tests/ntriplesplus/test-06.out, raptor/tests/ntriplesplus/test-06.ntp, raptor/tests/ntriplesplus/test-05.out, raptor/tests/ntriplesplus/test-05.ntp, raptor/tests/ntriplesplus/test-04.out, raptor/tests/ntriplesplus/test-04.ntp, raptor/tests/ntriplesplus/test-03.out, raptor/tests/ntriplesplus/test-03.ntp, raptor/tests/ntriplesplus/test-02.out, raptor/tests/ntriplesplus/test-02.ntp, raptor/tests/ntriplesplus/test-01.out, raptor/tests/ntriplesplus/test-01.ntp:
595	More N-Triples Plus tests
596
597	* raptor/tests/ntriplesplus/bad-00.ntp, raptor/tests/ntriplesplus/bad-01.ntp, raptor/tests/ntriplesplus/bad-02.ntp, raptor/tests/ntriplesplus/bad-03.ntp:
598	N-Triples Plus bad tests
599
600	* raptor/n3_lexer.l:
601	In prefix state, always return to initial on matching '.', then
602	error out.
603	(n3_syntax_error): Copy removed here.
604	(main): Init enough more of parser/locator so that n3_syntax_error
605	in main library can be used.
606
6072003-11-21  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
608
609	* raptor/rdfdump.c: extra newline in version
610
611	* raptor/rdfdump.c: extra newline in help
612
6132003-11-20  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
614
615	* librdf/rdf_parser_raptor.c:
616	(librdf_parser_raptor_error_handler,librdf_parser_raptor_warning_handler):
617	Do not pass on buffer directly since it is not a format string and
618	might contain % such as when it is a URI.  This causes libc to abort
619	in the middle of vsnprintf with an assertion failure :/
620
6212003-11-19  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
622
623	* demos/ntriples.pl: Style, HTML fixes.
624	Counting wasn't right.
625
626	* raptor/tests/Makefile.am:
627	Added check-ntriples-plus to check N-Triples Plus with the N-Triples
628	tests.
629
630	* raptor/n3_parser.y, raptor/n3_lexer.l, raptor/n3_common.h:
631	Added lineno to raptor_n3_parser context to track newlines for dos,
632	unix, mac since flex doesn't do that by default with yylineno.
633
634	* raptor/rdfdump.c: tidy help messages
635
636	* raptor/ntriples_parse.c:
637	Track newlines correctly for \r\n across chunks; move last_nl into
638	ntriples parser context.
639	(raptor_ntriples_parse_chunk,raptor_ntriples_parse_start): Use and
640	init last_nl in ntriples parser context.
641
6422003-11-16  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
643
644	* raptor/raptor.h: Added raptor_ntriples_string_as_utf8_string
645
646	* raptor/ntriples_parse.c (raptor_ntriples_term):
647	Added allow_utf8 argument and new class
648	RAPTOR_TERM_CLASS_FULL which uses all the passed in string.
649	(raptor_ntriples_string_as_utf8_string): Added, using
650	raptor_ntriples_term as above.
651	(raptor_ntriples_parse_line): Use size_t len args.
652
653	* utils/rdfproc.c: Replace a bunch of fprintf(..., "\n") with fputc
654
655	* raptor/rdfdump.c:
656	Use f/puts instead of print/fprintf when there are no %s
657
658	* librdf/rdf_heuristics.c (main):
659	Make test code silent unless LIBRDF_DEBUG > 1
660	Tidy code a little.
661
662	* librdf/rdf_digest.c, librdf/rdf_hash.c:
663	Replace a bunch of fprintf(..., "\n") with fputc
664
665	* raptor/raptor_uri.c (raptor_default_new_uri_for_rdf_concept):
666	Remove duplicate strlen(base_uri)
667
6682003-11-15  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
669
670	* raptor/n3_lexer.l: Document more ntriples plus
671	Error out if @prefix's name doesn't match name
672
673	* raptor/raptor_utf8.c (raptor_unicode_is_namestartchar):
674	Two | changed to ||.  Likely
675	worked anyway
676
6772003-11-11  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
678
679	* raptor/libraptor.3: Noted raptor_set_feature with non_nfc_fatal
680
681	* raptor/raptor.h:
682	Added RAPTOR_FEATURE_NON_NFC_FATAL to pick between NFC errors or warnings.
683
684	* raptor/raptor_general.c (raptor_set_feature):
685	Added RAPTOR_FEATURE_NON_NFC_FATAL to pick
686	between NFC errors or warnings.
687	(raptor_set_parser_strict): Set feature_non_nfc_fatal default off.
688
689	* raptor/raptor_internal.h:
690	Added feature_non_nfc_fatal to pick between NFC errors or warnings.
691
692	* raptor/raptor_parse.c:
693	Put 'quotes' around element/attribute names in messages.
694	Use feature_non_nfc_fatal to pick between NFC errors or warnings.
695
696	* raptor/tests/Makefile.am: check-bad-nfc-rdf - use strict mode
697
698	* raptor/rdfdump.c: Document -m/--mode arg
699
7002003-11-10  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
701
702	* raptor/configure.ac: Added tests/ntriplesplus
703
704	* raptor/tests/ntriplesplus/Makefile.am: N-Triples plus tests
705
706	* raptor/tests/ntriplesplus/test-00.ntp, raptor/tests/ntriplesplus/test-00.out:
707	N-Triples Plus default namespace test
708
709	* raptor/tests/Makefile.am: added ntriplesplus dir
710
711	* raptor/raptor_qname.c (raptor_qname_string_to_uri):
712	Keep original name around for error reporting.
713
714	* raptor/rdfdump.c, raptor/n3_parser.y: parser now called ntriples-plus
715
716	* raptor/n3_parser.y: parser called ntriplesplus
717
718	* raptor/n3_parser.y (production directive):
719	Fix declaring default namespace prefix
720
7212003-11-09  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
722
723	* raptor/tests/Makefile.am: added bad-20.rdf
724
725	* raptor/tests/bad-20.rdf:
726	check non-namespaced element does not crash parser
727
728	* raptor/raptor_qname.c (raptor_new_qname,raptor_new_qname_from_namespace_local_name):
729	Do not
730	die if no URI for qname is available.  It might be <a xmlns="">
731	which is at least needed for some error reports or for embedded
732	qnames.  Caused unnecessary crashes when parsing failed.
733
7342003-11-03  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
735
736	* configure.ac:
737	Added --with-mysql-config and automatic search for mysql_config program.
738	Added STORAGE_OBJS
739
740	* librdf/rdf_storage_mysql.c, librdf/rdf_storage_mysql.h:
741	RDF Storage in MySQL DB
742
743	* AUTHORS: Added Morten as MySQL store author
744
745	* librdf/rdf_storage.h, librdf/rdf_storage.c: Added mysql store
746
747	* librdf/Makefile.am: Added STORAGE_OBJS
748	Added rdf_storage_mysql.c rdf_storage_mysql.h
749
750	* librdf/librdf.h: Added LIBRDF_ERROR3
751
752	* raptor/raptor_xml.c (main): Make tests less chatty on success
753
754	* raptor/raptor_uri.c (main): Make it less chatty on success
755
756	* raptor/raptor_uri.c (raptor_uri_uri_string_to_filename_fragment):
757	Allow file://a|/ and file://a:/
758	(main): For WIN32, check the above works.
759
760	* librdf/rdf_parser_raptor.c:
761	Add mapping of rdf:nodeID values to redland generated IDs.
762	(librdf_parser_raptor_init): Create the userid->redlandID hash map.
763	(librdf_parser_raptor_terminate): Added to delete the hash map.
764	(librdf_parser_raptor_generate_id_handler): Do the mapping.
765
766	* raptor/autogen.sh, autogen.sh:
767	remove ltmain.sh libtool before libtoolize
768
769	* python/redlandtest.py (class RedlandGetsCase):
770	Add test for making a new anon (no arg) blank node
771
772	* raptor/manifest.pl:
773	Emit test-results.rdf in the style of http://www.w3.org/2003/08/owl-systems/test-results-out
774	for machine processing of test runs
775
776	* raptor/raptor_general.c (raptor_parse_uri_with_connection):
777	Fail before parsing if
778	raptor_www_fetch failed.
779
780	* raptor/raptor_internal.h:
781	Added raptor_www_error_varargs internal prototype.
782
783	* raptor/raptor_www_libxml.c (raptor_www_libxml_http_error):
784	This was just all wrong, printing to
785	stderr and then exit(1).  Change to use the proper
786	raptor_www_error_varargs callback.
787
788	* raptor/raptor_www.c (raptor_www_error_varargs):
789	Added, with va_list signature.
790
791	* raptor/raptor_general.c (raptor_parse_file):
792	When uri is given and base_uri is NULL, copy
793	the uri and free it later - fix to match the function documentation.
794
7952003-10-31  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
796
797	* raptor/raptor_general.c (raptor_parse_file):
798	fclose only when fh is not NULL
799
8002003-10-21  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
801
802	* librdf/rdf_serializer_rdfxml.c (librdf_serializer_rdfxml_terminate):
803	Free namespace before stack.
804
805	* librdf/rdf_serializer_rdfxml.c:
806	Use updated raptor_(new|free)_namespaces
807	(librdf_serializer_rdfxml_init, librdf_serializer_rdfxml_terminate):
808	Make the rdf namespace
809	(librdf_serializer_rdfxml_serialize_model): declare rdf:RDF
810	using raptor_new_qname_from_namespace_local_name
811
812	* raptor/raptor_parse.c (raptor_xml_end_element_handler):
813	For RAPTOR_DEBUG, declare
814	element_name at start of function.
815
8162003-10-20  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
817
818	* raptor/raptor.h:
819	raptor_namespace(s)_(new|free) renamed to raptor_(new|free)_namespace(s)
820	Added raptor_new_qname_from_namespace_local_name
821
822	* raptor/raptor_qname.c (raptor_new_qname_from_namespace_local_name):
823	Added.
824
825	* raptor/raptor_namespace.c:
826	raptor_namespaces_(new|free) renamed to raptor_(new|free)_namespaces
827
828	* raptor/raptor_namespace.c:
829	raptor_namespace_(new|free) renamed to raptor_(new|free)_namespace
830
831	* librdf/rdf_serializer_rdfxml.c:
832	Added a raptor_namespace_stack to the context.
833	(librdf_serializer_rdfxml_init): Updated with stack
834	(librdf_serializer_rdfxml_terminate): Added, to free stack.
835	(rdf_serializer_rdfxml_print_as_xml_attribute): Deleted.
836	(librdf_serializer_print_statement_as_rdfxml): Do less work in
837	finding max XML-name character for a property URI.
838	Replace use of rdf_serializer_rdfxml_print_as_xml_attribute
839	with calls to raptor_xml_escape_string.
840	(librdf_serializer_rdfxml_serialize_model): Use namespace stack
841	to declare rdf namespace - initial code.
842	(librdf_serializer_rdfxml_register_factory): Add terminate call.
843
844	* raptor/raptor_xml_writer.c:
845	raptor_namespaces_free renamed to raptor_namespaces_clear
846
847	* raptor/raptor_parse.c (raptor_xml_start_element_handler):
848	Use raptor_new_sax2_element.
849	raptor_namespaces_free renamed to raptor_namespaces_clear
850
851	* raptor/raptor_internal.h: Added raptor_new_sax2_element
852
853	* raptor/raptor_sax2.c (raptor_new_sax2_element): Added.
854
855	* raptor/raptor.h:
856	Added prototypes for raptor_namespaces_new, raptor_namespaces_clear
857
858	* raptor/raptor_namespace.c
859	(raptor_namespaces_new,raptor_namespaces_free):
860	Added for constructor and destructor.
861	raptor_namespaces_free renamed to raptor_namespaces_clear for
862	emptying a statically allocated namespace stack.
863
864	* raptor/n3_parser.y:
865	raptor_namespaces_free renamed to raptor_namespaces_clear
866
867	* librdf/rdf_serializer_rdfxml.c
868        (librdf_serializer_rdfxml_raptor_error_handler): Added.
869	(rdf_serializer_rdfxml_print_xml_attribute): Take world arg.
870	Use raptor_xml_escape_string to do the escaping.
871	(librdf_serializer_print_statement_as_rdfxml): pass world arg to
872	calls to rdf_serializer_rdfxml_print_xml_attribute
873
874	* librdf/rdf_utf8.h: Make librdf_unicode_char_to_utf8 match code
875
8762003-10-16  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
877
878	* raptor/n3_parser.y: Moved n3 lexer/parser stuff to n3_common.h
879	Added uri field to union.
880	URI_LITERAL and QNAME_LITERAL now are uri.
881	PREFIX now expects an IDENTIFIER to follow.
882	Remove all make qname/uri and free(copied token) sequences since the
883	lexer does it.
884	Added fake yy_init_globals to stop dumb warning.
885
886	* raptor/n3_lexer.l:
887	Make raptor_uris here from lexer tokens (qnames or URIs)
888	For @prefix, recognise following token as an identifier specially
889	rather than try to make it a URI.
890	(n3_token_free): Free string or raptor_uri.
891	(main): Lots of fixups to fake enough n3 parser structure to
892	get it working fairly standalone.
893
894	* raptor/Makefile.am: Added n3_common.h
895	Fixup free of null inside flex-generated lexer.
896
897	* raptor/n3_common.h: N3 parser/lexer shared internals
898
899	* raptor/raptor_internal.h: Moved n3 lexer/parser stuff to n3_common.h
900
901	* raptor/n3_parser.y (n3_qname_to_uri):
902	Replace with call to raptor_qname_string_to_uri
903	and added length parameter.
904
905	* raptor/raptor_qname.c (raptor_new_qname):
906	Replace raptor_namespace_local_name_to_uri
907	with use of raptor_new_uri_from_uri_local_name.
908	(raptor_qname_string_to_uri): Added, making only the URI
909	equivalent to the qname and handling N3/RDQL-style special
910	cases such as "prefix:", ":" and NULL.
911
912	* raptor/raptor_internal.h, raptor/raptor.h:
913	Moved raptor_qname, raptor_namespace, raptor_namespace_stack
914	classes into public API.
915	Added raptor_qname_string_to_uri
916
917	* raptor/raptor_namespace.c (raptor_namespace_local_name_to_uri):
918	Removed - only used once
919	internally and was never public.
920
9212003-10-09  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
922
923	* raptor/n3_lexer.l (n3_token_free): Added, for cleanup in debugging.
924	(main): Init and clear token/lval.
925
926	* raptor/tests/Makefile.am: Added ex-53
927
928	* raptor/tests/ex-53.out, raptor/tests/ex-53.rdf:
929	Check allowing optional rdf:RDF
930
931	* raptor/rdfdump.c:
932	--assume/-a feature_assume_is_rdf deleted; rdf:RDF is optional.
933
934	* raptor/raptor_general.c, raptor/raptor_parse.c:
935	feature_assume_is_rdf deleted; rdf:RDF is optional.
936
937	* raptor/raptor_internal.h: feature_assume_is_rdf deleted
938
9392003-10-08  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
940
941	* librdf/rdf_node.c: Fix debug calls when LIBRDF_DEBUG > 1
942
9432003-10-06  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
944
945	* raptor/tests/wine.out, raptor/tests/wine.rdf:
946	OWL Wine Ontology from http://www.w3.org/TR/owl-guide/wine.rdf
947
948	* raptor/tests/Makefile.am:
949	Added OWL Wine ontology from http://www.w3.org/TR/owl-guide/wine.rdf
950	as wine.rdf wine.out
951
9522003-09-30  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
953
954	* raptor/n3_parser.y:
955	Remove n3_parser_lex; re-#define yylex to call direct
956
957	* raptor/n3_lexer.l (copy_string_token):
958	Destroy malloced string on error return.
959
960	* raptor/n3_parser.y (n3_parse):
961	Don't delete buffer, pop buffer state; a successful lex
962	does that.
963
964	* raptor/raptor_internal.h: Remove n3_token_print
965
966	* raptor/n3_parser.y: Use reentrant yacc parser.
967	Store the lexer lval in the n3_parser context.
968	Lots of #define trickery to get flex/bison to talk nicely.
969	Make n3_parser_error take an rdf_parser arg (this isn't configurable
970	by bison itself, so is likely fragile).
971	Remove use of extern in lineno; get it from the lexer.
972	Remove N3_Parser global; use rdf_parser local.
973	(n3_parser_error): Update for having rdf_parser arg, update locator
974	lineno from scanner.
975	(n3_syntax_error, n3_qname_to_uri): Get lineno from scanner.
976	(n3_parse): Remove fixmes, no need for protecting globals.
977	(main): Update for reentrant parser; init locator from standalone
978	args.
979
980	* raptor/n3_lexer.l:
981	Remove n3_lexer.c/.h prototypes no longer(?) needed with re-entrant lexer.
982	Remove use of lineno; let lexer do it.
983	Change lexer call to pass in lval from reentrant parser.
984	(n3_token_print): Pass in lval.
985	(main): Update for api changes.
986
9872003-09-29  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
988
989	* raptor/raptor_internal.h: Updates for reentrant lexer.
990
991	* raptor/n3_parser.y: Use reentrant lexer API.
992	Define YYLEX_PARAM to be scanner arg, from current grammar.
993	(n3_parser_lex): Take scanner arg.
994	(n3_syntax_error): Add rdf_parser arg.
995	(n3_parse): Init and destroy reentrant lexer.
996	(raptor_n3_parse_terminate): Tidy up any lexer stuff.
997	(main): Check for file not found, report it.
998
999	* raptor/n3_lexer.l:
1000	Switch to reentrant lexer.  Pass rdf_parser into code, yyextra
1001	internally.
1002	(yywrap): Add scanner arg.
1003	(copy_string_token, n3_syntax_error): Add rdf_parser arg.
1004	(main): Use reentrant calls for lexer to set yyin, get_text.  Use
1005	yylex_init/yylex_destroy.
1006
1007	* raptor/Makefile.am: n3_lexer_test depends on raptor_utf8
1008
1009	* raptor/raptor_parse.c:
1010	Add EXPAT_UTF8_BOM_CRASH fix updates for sax2 changes.
1011
1012	* raptor/configure.ac: Tweak for old flex version output
1013
1014	* raptor/configure.ac: Try to check flex is new enough.
1015
10162003-09-25  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
1017
1018	* configure.ac: 3store linking fixes.
1019
1020	* librdf/rdf_storage_tstore.c: comment out unused context
1021
1022	* configure.ac: Bumped raptor min to 1.1.0
1023	Added --with-threestore.
1024
1025	* librdf/rdf_storage.c (librdf_init_storage):
1026	Call librdf_init_storage_tstore if HAVE_TSTORE
1027	(librdf_storage_add_statements): Do add statements over a stream here
1028	if lower level just has add_statement method.
1029
1030	* librdf/rdf_storage_tstore.h: RDF Storage using 3store
1031
1032	* librdf/Makefile.am: Added rdf_storage_tstore.c rdf_storage_tstore.h
1033
1034	* librdf/rdf_storage_tstore.c: RDF Storage using 3store
1035
10362003-09-22  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
1037
1038	* librdf/rdf_init.h: Added internal librdf_error_varargs
1039
1040	* librdf/rdf_init.c (librdf_error_varargs): Added, internal
1041
10422003-09-21  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
1043
1044	* raptor/n3_parser.y: Minor C reformatting
1045
10462003-09-20  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
1047
1048	* raptor/raptor.h: Added raptor_parsers_enumerate prototype
1049
1050	* raptor/n3_lexer.l: minor reformatting
1051
1052	* raptor/n3_lexer.l (copy_string_token): Make \r, \n and \t work
1053
1054	* raptor/raptor_general.c (raptor_init):
1055	Ensure rdf/xml is default parser.
1056	(raptor_parsers_enumerate): Added, to enumerate parsers, returning
1057	their name & label.
1058
1059	* raptor/examples/grapper.c:
1060	Use raptor_parsers_enumerate to get parser names, labels.
1061
1062	* raptor/n3_lexer.l: flex archaeology for options
1063
1064	* raptor/examples/Makefile.am: Don't build examples by default
1065
10662003-09-19  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
1067
1068	* raptor/raptor_www.c, raptor/raptor_general.c:
1069	Revert to old API for raptor_uri_uri_string_to_filename
1070
1071	* raptor/raptor.h, raptor/raptor_uri.c
1072	(raptor_uri_uri_string_to_filename): Restored to old API.
1073	(raptor_uri_uri_string_to_filename_fragment): Added with fragment arg.
1074
1075	* librdf/rdf_hash_bdb.c: Use bdb->set_flags only when present
1076
1077	* configure.ac: Check for BDB DB->set_flags
1078
10792003-09-17  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
1080
1081	* raptor/n3_parser.y (n3_qname_to_uri):
1082	Handle NULL (":" in N3) returning the default
1083	namespace.  It's not quite clear if this is legal.
1084
1085	* raptor/n3_parser.y (raptor_n3_generate_statement):
1086	Do nothing if some part of the triple
1087	is NULL.
1088
1089	* raptor/raptor_internal.h: n3_syntax_error now takes varargs
1090
1091	* raptor/n3_parser.y (n3_syntax_error): Now takes varargs
1092
1093	* raptor/n3_lexer.l: n3_syntax_error now takes varargs
1094	(copy_string_token): Added \u, \U.  Fixed, \r, \n, \t
1095
1096	* raptor/n3_parser.y: Wrap a debugging printf
1097
1098	* raptor/n3_lexer.l:
1099	For blank literal "_:abc", don't include _: in the id passed to the parser.
1100
1101	* raptor/n3_parser.y:
1102	Throughout replace raptor_new_uri with raptor_copy_uri when copying
1103	existing base URI.
1104
1105	* raptor/n3_parser.y:
1106	Throughout: Handle NULL uri string meaning use the base URI
1107
1108	* raptor/n3_lexer.l:
1109	Handle <> (returning NULL) as well as <> with content.
1110	(n3_token_print): Update to match.
1111	(n3_syntax_error): Simple standalone copy here.
1112
1113	* raptor/n3_parser.y (n3_parser_error):
1114	Set lineno and call raptor_parser_simple_error to
1115	pass on the parsing error.
1116	(n3_syntax_error): Added. Set lineno and call raptor_parser_error
1117	to pass on a general syntax error.
1118	(n3_qname_to_uri): Init locator line before calling raptor_new_qname
1119	that may fail, calling raptor_parser_simple_error.
1120
1121	* raptor/raptor_internal.h: Add n3_syntax_error
1122
1123	* raptor/n3_lexer.l: Call n3_syntax_error on a syntax error
1124
1125	* raptor/examples/grapper.c: Add n3 syntax
1126
1127	* raptor/n3_parser.y (propertyList): Handle NULL verb, two cases.
1128	(raptor_n3_parse_start): No locator column, byte values just yet.
1129
1130	* raptor/n3_parser.y (n3_qname_to_uri):
1131	Call raptor_new_qname with rdf_parser for errors
1132
11332003-09-15  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
1134
1135	* raptor/n3_parser.y:
1136	Don't raptor_free_uri shared uris made from qnames
1137
1138	* raptor/n3_parser.y (n3_parse): Tidy up flex buffers.
1139	(raptor_n3_parse_terminate): Destroy any flex state on exit.
1140
1141	* raptor/n3_parser.y (n3_parse): delete buffer after parse.
1142
1143	* raptor/n3_parser.y: Free uri strings returned from URI_LITERAL.
1144
1145	* raptor/raptor_identifier.c (raptor_new_identifier):
1146	Note uri, literal_datatype are shared and not copied.
1147
1148	* raptor/n3_parser.y: Free strings returned from QNAME_LITERAL.
1149
1150	* raptor/raptor_sequence.c (raptor_new_sequence): Use RAPTOR_MALLOC.
1151	(raptor_free_sequence): Free the raptor_sequence.
1152
1153	* raptor/raptor_identifier.c (raptor_new_identifier):
1154	Note id, literal, literal_language are
1155	shared and not copied.
1156
1157	* raptor/n3_parser.y (statement): Free identifier used for subject
1158	(propertyList): Free identifier used for verb
1159
1160	* raptor/n3_parser.y:
1161	Track when an identifier is copied using is_malloced
1162	(raptor_free_triple): Actually free the triple.
1163
1164	* raptor/raptor_internal.h, raptor/n3_parser.y:
1165	raptor_triple now just has 3 items.
1166
1167	* raptor/n3_parser.y (raptor_n3_parse_terminate): Free namespaces
1168
1169	* raptor/n3_parser.y (n3_parse): Do not parser NULL or empty string.
1170	(raptor_n3_parse_chunk): Do not parser empty buffer.
1171
1172	* raptor/rdfdump.c: (main) Don't free NULL uri
1173
1174	* raptor/n3_parser.y: More debugging messages.
1175	Recover from errors, don't generate partial triples.
1176	(n3_qname_to_uri): Return NULL if raptor_new_qname does not give a
1177	URI (some error happened).
1178
1179	* raptor/n3_lexer.l: Remove END token, should only use EOF
1180	Count lines right for \r\n|\r|\n
1181	Handle EOF in comments
1182
1183	* raptor/n3_parser.y: Remove END token, should only use EOF
1184	Add more debugging statements.
1185	Throughtout, change raptor_new_uri to raptor_new_uri_relative_to_base.
1186	(statement): Handle empty propertyList ("[]").
1187	(propertyList 1): Copy verb into objectList, then append
1188	propertyList items (if not empty "[]" again).
1189	(objectList): Add empty item for "[]", returning NULL.
1190	(resource): For [], handle NULL and generate statements here
1191	before returning the generated id.
1192	(n3_parser_print_statement): Added for test code
1193	(main): In test code, init URI module only, create fake
1194	static rdf_parser and n3_parser and initialise enough (base URI,
1195	and context) so that it works.
1196
1197	* raptor/n3_parser.y: Add error recovery at '.'
1198
11992003-09-14  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
1200
1201	* raptor/n3_parser.y:
1202	raptor_print_triple renamed to raptor_triple_print
1203
1204	* raptor/n3_parser.y: Only define raptor_print_triple if debugging.
1205
1206	* raptor/raptor_identifier.c, raptor/n3_parser.y:
1207	raptor_print_identifier renamed to raptor_identifier_print
1208
1209	* raptor/n3_parser.y: Raptor N-Triples+/N3 parser
1210
1211	* raptor/n3_lexer.l: Raptor N-Triples+/N3 lexer
1212
1213	* raptor/raptor_identifier.c (raptor_identifier_print):
1214	Added for debugging
1215
1216	* raptor/raptor_internal.h: When debugging, raptor_identifier_print
1217
1218	* raptor/raptor_identifier.c (raptor_new_identifier):
1219	Add literal, literal_datatype,
1220	literal_language args and handle them.
1221	(raptor_init_identifier): Deleted, not used (enough).
1222	(raptor_copy_identifier, raptor_free_identifier): Updated for
1223	literal, literal language and literal datatype.
1224
1225	* raptor/rdfdump.c:
1226	Use the syntax name (after validation) to intialise the parser rather
1227	than an ever-growing set of flags.
1228
1229	* raptor/raptor_uri.c (raptor_default_new_uri):
1230	If the filename had a fragment, re-append
1231	it to the file:URI after updating it to be correct.
1232	(raptor_uri_uri_string_to_filename): Add fragment_p arg to return
1233	the URI fragment after a discovered filename in a file:URI.
1234	(assert_uri_to_filename): Update call to
1235	raptor_uri_uri_string_to_filename.
1236
1237	* raptor/raptor_parse.c (raptor_xml_parser): Add namespaces.
1238	Elsewhere change rdf_parser->namespaces to
1239	rdf_xml_parser->namespaces.
1240	(raptor_xml_parse_start): Initialise the namespaces for rdf/xml.
1241
1242	* raptor/raptor_sequence.c: Raptor sequence ADT
1243
1244	* raptor/raptor_namespace.c (raptor_namespace_init):
1245	Add defaults arg to control which
1246	namespaces are added by default. 0=none, 1=xml, 2=... others
1247	(main): Update test code to give new arg.
1248
1249	* raptor/raptor_general.c (raptor_init): Call raptor_init_parser_n3.
1250	(raptor_start_parser, raptor_free_parser): Remove namespace code from
1251	here; moves into specific parser context code.
1252	(raptor_parse_file): Update for raptor_uri_uri_string_to_filename
1253	extra arg.
1254
1255	* raptor/raptor_xml_writer.c:
1256	(raptor_new_xml_writer) Update for raptor_namespaces_init defaults
1257	arg.
1258
1259	* raptor/raptor_rss.c (raptor_rss_emit):
1260	Use raptor_new_identifier rather than
1261	raptor_init_identifier and make items dynamically allocated.
1262
1263	* raptor/raptor_www.c:
1264	(raptor_www_file_fetch) Update for raptor_uri_uri_string_to_filename
1265	extra argument.
1266
1267	* raptor/raptor.h:
1268	Add literal, literal_datatype, literal_language to raptor_identifier
1269	structure.
1270	Add above arguments to raptor_new_identifier.
1271	Remove raptor_init_identifier - not used.
1272	Add fragment_p argument to raptor_uri_uri_string_to_filename.
1273
1274	* raptor/raptor_internal.h:
1275	Remove namespaces from raptor_parser; now in per-syntax contexts.
1276	Updated raptor_namespaces_init to take defaults arg.
1277	Added N3 class prototypes, for n3_token_print, raptor_init_parser_n3,
1278	n3_parser_lex.
1279	Added raptor_triple structure.
1280	Added sequence class prototypes.
1281
1282	* raptor/Makefile.am:
1283	Add n3_lexer.c n3_lexer.h both generated from n3_lexer.l by flex;
1284	add maintainer-only rules to do that.
1285	Add n3_parser.tab.c n3_parser.tab.h generated from n3_parser.y by
1286	yacc; add maintainer-only rules to do that.
1287	Add raptor_sequence.c and test.
1288
1289	* raptor/configure.ac: Add lex (flex required) and yacc
1290
12912003-09-12  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
1292
1293	* Redland.i:
1294	Add prototypes for internal functions librdf_error, librdf_warning
1295	along with warning that these aren't in the API.
1296
12972003-09-11  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
1298
1299	* python/RDF.py (Model): Added sync() calling librdf_model_sync
1300
1301	* python/redlandtest.py (RedlandModelGeneral): Test model.sync()
1302
13032003-09-08  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
1304
1305	* python/RDF.py:
1306	(Node:_get_literal_value) Use dt_uri=Uri(string=... not (uri_string=...
1307
1308	* configure.ac: Bumped version to 0.9.15
1309
1310	* Snapshotted redland_0_9_14 for 0.9.14 release
1311
1312	* librdf/redland.spec.in: Require raptor 1.0.0
1313
1314
1315	* librdf/rdf_hash_bdb.c (librdf_hash_bdb_open):
1316	Restore previous call to db_create.
1317	Add an extra clause to do nothing inside big #ifdef chain
1318	if HAVE_DB_CREATE is present.
1319
1320	* configure.ac: Min raptor version is now 1.0.0
1321
1322	* raptor/configure.ac: Bumped version to 1.1.0
1323
1324	* Snapshotted raptor_1_0_0 for 1.0.0 release
1325
1326	* raptor/libraptor.3: new date
1327
1328	* raptor/ntriples.h,raptor/Makefile.am: Removed old header ntriples.h
1329
1330	* raptor/raptor_general.c, raptor/raptor.h, raptor/ntriples_parse.c:
1331	Removed deprecated functions as promised. Changes are described in
1332	the libraptor.3 man page.
1333
1334	* raptor/configure.ac: Updated for Raptor 1.0.0
1335	Shared library soname major now 1
1336
1337	* configure.ac:
1338	With only --with-bdb=PREFIX given, set the lib & include from that
1339	value.
1340	Use 'unknown' rather than none when some BDB bits given and no
1341	guessing.
1342
1343	* raptor/win32_config.h: Added R_OK define for access()
1344
1345	* raptor/tests/Makefile.am: test wording for failures
1346
1347	* librdf/rdf_hash_bdb.c (librdf_hash_bdb_open):
1348	Probably restore early DB3.0 to working with db_create.
1349
13502003-09-05  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
1351
1352	* raptor/tests/Makefile.am: Added bad-05.nt
1353
1354	* raptor/tests/bad-05.nt: Bad Unicode character #x110000
1355
1356	* raptor/tests/test.out, raptor/tests/test.nt: fixes
1357
1358	* raptor/tests/test.nt:
1359	Removed resource18-20 - illegal Unicode chars.  Added \U0010FFFF
1360
1361	* raptor/ntriples_parse.c (raptor_ntriples_term):
1362	Forbid Unicode characters outside #x0-#x10FFFF
1363
13642003-09-04  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
1365
1366	* java/org/librdf/redland/World.java: Use librdf_version/copyright*
1367
1368	* Redland.i: Use librdf_version* and both librdf_copyright strings
1369
1370	* tcl/Makefile.am: clean more
1371
1372	* raptor/libraptor.3: Updated for 1.0.0
1373	Added raptor_parse_file_stream.
1374	Added new feature normalize_language.
1375	Added list of all static variables exported.
1376
1377	* configure.ac: Remove a bunch of unused LIBRDF_VERSION_ AC_SUBST.
1378	Remove LIBRDF_VERSION_INFO - not used
1379	Define LIBRDF_VERSION_DECIMAL here and make it an AC_SUBST.
1380
1381	* librdf/rdf_init.c: Use LIBRDF_VERSION_DECIMAL define.
1382
1383	* raptor/configure.ac:
1384	Define RAPTOR_VERSION_DECIMAL here and make it an AC_SUBST.
1385
1386	* raptor/raptor_general.c: Use RAPTOR_VERSION_DECIMAL define.
1387
1388	* redland-config.in: Added --version-decimal.
1389
1390	* redland-config.1, raptor/raptor-config.1:
1391	Document --version-decimal and --libtool-libs
1392
1393	* raptor/raptor-config.in: Added --version-decimal.
1394
1395	* raptor/rdfdump.c: Allow filename "-" to be used as standard input.
1396	When a filename is given, use raptor_parse_file.
1397	Adjust the error messages to mention file names when using
1398	raptor_parse_file
1399
1400	* raptor/raptor.h: Added raptor_parse_file_stream
1401
1402	* raptor/raptor_general.c (raptor_parse_file_stream):
1403	Added, allowing passing in of an existing
1404	FILE* stream (with optional filename) and parsing rather than
1405	raptor doing the fopen/fclose.
1406	(raptor_parse_file): A NULL uri argument now means stdin.
1407
1408	* raptor/raptor_internal.h, raptor/raptor_parse.c:
1409	Remove rdf_parser->fh
1410
1411	* utils/rdfproc.1:
1412	Update parse, serailize commands to note optional syntax names, list
1413	valid names and mention the default RDF/XML.
1414
1415	* utils/rdfproc.c:
1416	Make syntax name option to parser commands, defauting to (default
1417	parser) rdf/xml
1418	Hide 'query' command further.
1419	Print short copyright in usage, help.
1420	Tidy help messages.
1421	Delete rotten parser features
1422
1423	* librdf/rdf_parser_raptor.c (librdf_parser_raptor_constructor):
1424	Register "rdfxml" name and mime
1425	type, URL http://www.w3.org/TR/rdf-syntax-grammar.
1426	Keep raptor name around
1427
1428	* raptor/rdfdump.c:
1429	Use raptor_short_copyright_string in usage/help messages
1430
1431	* raptor/raptor_general.c, raptor/raptor.h:
1432	Added raptor_short_copyright_string
1433
1434	* utils/rdfproc.c: Free options hash
1435
1436	* librdf/redland.spec.in: Add rdfproc.
1437	Require raptor 0.9.12 min
1438
1439	* utils/rdfproc.1: tweak
1440
1441	* utils/Makefile.am: Added rdfproc.1
1442
1443	* utils/rdfproc.1: rdfproc manual page
1444
1445	* utils/rdfproc.c: help
1446
1447	* utils/rdfproc.c:
1448	Tidy usage message - use triples & graphs, explain source, target, arc.
1449	Add short copyright
1450
1451	* librdf/rdf_init.c, librdf/librdf.h:
1452	Added librdf_short_copyright_string.
1453	Made long one have line breaks and more URIs
1454
1455	* utils/rdfproc.c: statements now find
1456	Added optional CONTEXT to add/add-typed/remove, warning if not enabled.
1457
1458	* utils/rdfproc.c: Use rdfproc_getopt.h
1459
1460	* configure.ac:
1461	Enable public domain getopt in getopt.c & rdfproc_getopt.h for
1462	rdfproc if there is no getopt or getopt_long
1463
1464	* utils/Makefile.am:
1465	Enable public domain getopt in getopt.c & rdfproc_getopt.h
1466
1467	* utils/getopt.c, utils/rdfproc_getopt.h:
1468	public domain getopt for rdfproc
1469
1470	* configure.ac: Look for getopt.h
1471
1472	* librdf/rdf_hash.h: Added librdf_hash_put_strings
1473
1474	* librdf/rdf_hash.c (librdf_hash_put_strings):
1475	Added helper to add strings to hash easier.
1476
1477	* librdf/rdf_storage.c (librdf_new_storage_with_options):
1478	Added, taking a librdf_hash
1479	argument.  Similar to librdf_new_model_with_options.
1480
1481	* librdf/rdf_storage.h: Added librdf_new_storage_with_options
1482
1483	* librdf/rdf_init.c:
1484	Renamed public statics to librdf_version* and librdf_copyright_string.
1485	Added librdf_version_decimal.
1486
1487	* librdf/librdf.h: Added REDLAND_API
1488	Added REDLAND_DEPRECATED
1489	Added public statics librdf_version* and librdf_copyright_string.
1490
1491	* utils/Makefile.am: Added rdfproc
1492
1493	* utils/rdfproc.c:
1494	Redland RDF processor - converted from examples/example4.c
1495
14962003-09-03  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
1497
1498	* Makefile.PL: Updated for 0.9.13
1499	Uses configure.ac
1500	Pick the perl prefix to pass to configure.
1501	make clean needs a little help else it just returns 'exit 2'.
1502	install: Installs just the shared libraries for raptor and
1503	redland, then perl.
1504	Have a hand-crafted MANIFEST and MANIFEST.SKIP now.
1505
1506	* raptor/raptor_general.c (raptor_set_feature):
1507	Add new feature normalize_language
1508	(raptor_set_parser_strict): Set default for feature
1509	normalize_language to true.
1510
1511	* raptor/raptor.h, raptor/raptor_internal.h:
1512	Add new feature normalize_language
1513
1514	* raptor/raptor_parse.c (raptor_xml_start_element_handler):
1515	Normalize language to lowercase.
1516	After http://www.w3.org/TR/rdf-concepts/#dfn-language-identifier
1517	Controlled by a new parser feature 'normalize_language'.
1518
1519	* raptor/ntriples_parse.c (raptor_ntriples_parse_line):
1520	Normalize language to lowercase.
1521	After http://www.w3.org/TR/rdf-concepts/#dfn-language-identifier
1522
15232003-09-01  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
1524
1525	* librdf/Makefile.am:
1526	In AM_LDFLAGS, use @LIBRDF_LIBS@ for -L/-l libraries and
1527	@LIBRDF_INTERNAL_LIBS@ for libtool things.
1528	Remove not-needed $(LIBS) from test binaries link lines.
1529
1530	* examples/Makefile.am:
1531	In AM_LDFLAGS, use @LIBRDF_LIBS@ for -L/-l libraries and
1532	@LIBRDF_INTERNAL_LIBS@ for libtool things.
1533
1534	* Makefile.am: raptor subdirectory is now not always built
1535
1536	* configure.ac: TIdy some configure --with/--enable messages
1537	Added RAPTOR_CONFIG program (default raptor-config)
1538	Added --with-raptor=system or internal.  By default will pick the best.
1539	Checks for minmum versions and warns if too old, but proceeds.
1540	raptor subdirectory is now not always built.
1541
1542	* raptor/raptor-config.in: Oops, -lraptor with --libs
1543
1544	* redland-config.in:
1545	Added --libtool-libs for compiling with librdf using libtool.
1546
1547	* configure.ac:
1548	Added LIBRDF_LIBTOOLLIBS for compiling with librdf using libtool.
1549
1550	* raptor/configure.ac:
1551	Added RAPTOR_LIBTOOL_LIBS for compiling with raptor using libtool.
1552
1553	* raptor/raptor-config.in:
1554	Added exec_prefix to make --libs generate the right -L
1555	Added --libtool-libs for compiling with raptor using libtool.
1556
15572003-08-31  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
1558
1559	* configure.ac, raptor/configure.ac:
1560	dmalloc enabled only if dmalloc.h is present
1561
1562	* raptor/tests/Makefile.am: Removed warn-01 re-added accidently.
1563
1564	* raptor/tests/warn-00.out, raptor/tests/warn-00.rdf:
1565	Added rdf:bagID warning check
1566
1567	* raptor/tests/Makefile.am:
1568	Added scanning tests and ex-52.svg/out for inside SVG
1569
1570	* raptor/tests/ex-52.out, raptor/tests/ex-52.svg:
1571	Check scanning for rdf/xml in SVG
1572
1573	* raptor/raptor_general.c (raptor_set_parser_strict):
1574	Scanning and assuming are never default
1575	on, must be enabled
1576
1577	* raptor/raptor_parse.c (raptor_xml_start_element_handler):
1578	Fix scanning for rdf:RDF.  Do
1579	parent->child processing if the grammar has a state set up,
1580	in this case it is expecting a list of node elements.
1581
1582	* raptor/rdfdump.c: Set strict before setting other features
1583
1584	* raptor/rdfdump.c: Use strict_mode
1585
1586	* raptor/tests/warn-00.out, raptor/tests/warn-00.rdf,
1587	raptor/tests/warn-01.out, raptor/tests/warn-01.rdf,
1588	raptor/tests/warn-03.rdf: These are now errors not wrarnings
1589
1590	* raptor/raptor_parse.c (raptor_xml_start_element_handler):
1591	 Non-namespaced elements are now
1592	an error.
1593	(raptor_process_property_attributes): Tidy non-namespaced element name.
1594	(raptor_start_element_grammar): Give errors if an attempt is made
1595	to proceed dealing with elements with no namespace for property or
1596	node elements - attributes are caught above.
1597
1598	* raptor/tests/Makefile.am:
1599	Add bad-18.rdf, bad-19.rdf for non-namespaced elements
1600
1601	* raptor/tests/bad-18.rdf, raptor/tests/bad-19.rdf:
1602	Test node/property elements without namespaces fail
1603
1604	* raptor/raptor_internal.h:
1605	Add raptor_parser field 'magic' for libxml2 error/warning callback
1606	validation.  and declare RAPTOR_LIBXML_MAGIC to set use there
1607
1608	* raptor/raptor_general.c (raptor_new_parser):
1609	Set RAPTOR_LIBXML_MAGIC field in structure for
1610	libxml2 error/warning callback validation.
1611
1612	* raptor/ntriples_parse.c (raptor_ntriples_term):
1613	Check that the string/URI term was terminated
1614	before the end of the string.
1615
1616	* raptor/tests/Makefile.am: Added bad-04.nt
1617
1618	* raptor/tests/bad-04.nt: Test for non-terminated URI
1619
1620	* raptor/raptor_libxml.c (raptor_libxml_warning,raptor_libxml_error):
1621	Validate the ctx pointer
1622	returned since sometimes it is a ctx, sometimes ctx->userData.  The
1623	latter is what is expected.
1624
1625	* raptor/tests/Makefile.am:
1626	Oops, run bad ntriples tests in N-Triples mode
1627
1628	* raptor/rapper.1: Added --version/-v
1629
1630	* raptor/rdfdump.c: Tidied up option error handling, messages.
1631	Added --version/-v
1632
1633	* librdf/rdf_storage.c:
1634	(librdf_storage_add_statement, librdf_storage_add_statements,
1635	librdf_storage_remove_statement,
1636	librdf_storage_context_add_statement,
1637	librdf_storage_context_remove_statement)
1638	For these optional methods that can change the store, return failure
1639	if the factory does not implement them.
1640	(librdf_storage_context_add_statements): Added either using the
1641	factory method or librdf_storage_context_add_statement if that
1642	is missing.
1643	(librdf_storage_context_remove_statements): Added either using the
1644	factory method or librdf_storage_context_remove_statement if that
1645	is missing.
1646	(librdf_storage_context_as_stream): Added, deprecating
1647	librdf_storage_context_serialise.
1648
1649	* librdf/rdf_storage.h:
1650	Added new context_add_statements and context_remove_statements
1651	factory methods.  Note that those are optional and so are
1652	all other context methods or methods that change the store (could be
1653	read only)
1654	Added prototypes for librdf_storage_context_add_statements,
1655	librdf_storage_context_remove_statements.
1656	Added prototype for librdf_storage_context_as_stream, deprecating
1657	librdf_storage_context_serialise.
1658
1659	* librdf/rdf_model_storage.c:
1660	(librdf_model_storage_context_add_statements) Added, calling
1661	librdf_storage_context_add_statements
1662	(librdf_model_context_remove_statements) Added, calling
1663	librdf_storage_context_remove_statements
1664
1665	* librdf/rdf_model.c:
1666	(librdf_model_context_add_statements) Use factory method if
1667	present otherwise use existing code and
1668	librdf_model_context_add_statement method.
1669	(librdf_model_context_remove_statements) Use factory method if
1670	present otherwise use existing code and
1671	librdf_model_context_remove_statement method.
1672
1673	* librdf/rdf_model.h: model_factory - note sync is optional.
1674	Add context_add_statements and context_remove_statements, both
1675	optional that librdf_model will implement using the singular forms if
1676	they are missing.
1677
1678	* librdf/rdf_node.c (librdf_node_equal): Remove unused var
1679
16802003-08-30  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
1681
1682	* librdf/rdf_stream.c (librdf_stream_update_current_element):
1683	Do not do excessive work -
1684	only do a lower level check is_updated is false.
1685	(librdf_stream_next): Reset is_updated after an
1686	stream->next_method is performed.
1687	(librdf_stream_get_object): Do less work, just return
1688	librdf_stream_update_current_element, always the current element or
1689	NULL at the end.
1690
1691	* librdf/rdf_iterator.c (librdf_iterator_update_current_element):
1692	Do not do excessive work -
1693	only do a lower level check is_updated is false.
1694	(librdf_iterator_next): Reset is_updated after an
1695	iterator->next_method is performed.
1696	(librdf_iterator_get_object): Do less work, just return
1697	librdf_iterator_update_current_element, always the current element or
1698	NULL at the end.
1699
1700	* librdf/rdf_stream.h, librdf/rdf_iterator.h: Add is_updated flag
1701
1702	* librdf/rdf_node.c (librdf_node_equals): Actually use interned nodes.
1703
1704	* librdf/rdf_uri.c (librdf_uri_equals): Actually use interned URIs.
1705
1706	* librdf/rdf_model.c (Main):
1707	In test code, use librdf_parser_parse_string_as_stream rather
1708	than write files, delete them.
1709
1710	* librdf/rdf_node.c:
1711	Updates to share all librdf_node objects like for librdf_uri - usage
1712	counts and shared pointers.
1713	(librdf_init_node): Initialise the three hashes for resource,
1714	literal, blank nodes.
1715	(librdf_finish_node): Clean up the three hashes.
1716	(librdf_new_node_from_uri_string_or_uri): Internal helper
1717	function to do all resource node creation.  Does the
1718	minimum of uri_string to/from uris objects conversion.
1719	If the resource node isn't in the resource hash (H_RESOURCE), add it
1720	otherwise just bump the usage count.
1721	(librdf_new_node_from_uri_string, librdf_new_node_from_uri,
1722	librdf_new_node_from_uri_local_name,
1723	librdf_new_node_from_normalised_uri_string): Use
1724	librdf_new_node_from_uri_string_or_uri.
1725	(librdf_new_node_from_typed_literal): If the librdf_node_encode-ed
1726	buffer of the literal node isn't in the literal hash (H_LITERAL),
1727	add it, otherwise just bump the usage count.
1728	(librdf_new_node_from_blank_identifier): If the identifier string
1729	isn't in the blank hash (H_BLANK), add it, otherwise just bump the
1730	usage count.
1731	(librdf_new_node_from_node): Now 1 line.
1732	(librdf_free_node): Decrement usage and then free and remove from the
1733	appropriate hashes if the usage was 0.
1734	(librdf_node_get_li_ordinal): Get the ordinal from the URI string
1735	since it isn't/wasn't ever stored.
1736
1737	* librdf/rdf_node.h:
1738	librdf_node - add usage count. Remove ordinal union part, never used.
1739	Add key & size to literal part.
1740
1741	* librdf/rdf_statement.c, librdf/rdf_query.c,
1742	librdf/rdf_concepts.c (main): Call librdf_init_node and
1743	librdf_finish_node in the test code.
1744
1745	* librdf/rdf_init.h:
1746	Added node mutext (when threading) and node hashes to world structure.
1747
1748	* librdf/rdf_init.c (librdf_world_open): Call librdf_init_uri.
1749	(librdf_world_set_uris_hash): Deleted
1750	(librdf_init_world): Don't use arg2.
1751
1752	* librdf/rdf_uri.c (librdf_new_uri): Fail if uri_string is NULL.
1753	Tidy up cleanup and thread un-/locking.
1754	(librdf_new_uri_from_uri): Actually use the interning of URIs.
1755	(librdf_new_uri_from_uri_local_name): Fail if URI is NULL.
1756	Tidy up cleanup and thread un-/locking.
1757	(librdf_new_uri_normalised_to_base, librdf_new_uri_relative_to_base):
1758	Fail if URI is NULL.
1759
1760	* raptor/configure.ac, configure.ac:
1761	Added --with-dmalloc option default auto for maintainer, no otherwise.
1762
17632003-08-29  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
1764
1765	* perl/lib/RDF/Redland/Parser.pm:
1766	Use raptor in the example. Add a mime type example.
1767
1768	* demos/demo.pl: s/statement/triple/ in html
1769
1770	* demos/demo.pl: Update parser labels.
1771	Add owl namespace.
1772	Trim rdf content whitespace.
1773	Become read only if db is not writable to this user.
1774
1775	* docs/Makefile.am: Added .pod.html rule
1776
17772003-08-28  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
1778
1779	* docs/fix-python-xhtml:
1780	Remove remaining broken fragments, example urls
1781
1782	* docs/fix-python-xhtml: Exclude __builtin__ class from links
1783
1784	* Released RPMs version 0.9.13-3 (patch redland-0.9.13-perl2.patch)
1785
1786	* librdf/redland.spec.in:
1787	(0.9.13-2, 0.9.13-3) patches added to fix broken perl UNIVERSAL::isa
1788
1789	* perl/lib/RDF/Redland/URI.pm, perl/lib/RDF/Redland/Node.pm:
1790	Use URI::URL in the isa
1791
1792	* Released RPMs version 0.9.13-2 (patch redland-0.9.13-perl1.patch)
1793
1794	* perl/lib/RDF/Redland/URI.pm, perl/lib/RDF/Redland/Node.pm:
1795	Fix totally broken use of UNIVERSAL::isa
1796
1797	* perl/lib/RDF/Redland/URI.pm (new):
1798	Fix arg promotion from URI objects.
1799
1800	* perl/lib/RDF/Redland/URI.pm (new): Fix cloning.
1801
1802	* configure.ac: Bumped version to 0.9.14
1803
1804	* Snapshotted redland_0_9_13 for 0.9.13 release
1805
1806	* docs/redland.pod: Note out of dateness
1807
1808	* docs/redland.pod, librdf/rdf_serializer_rdfxml.c,
1809	librdf/rdf_serializer_raptor.c, utils/db_upgrade.c,
1810	tcl/example.tcl, ruby/example.rb: Use librdf_model_as_stream
1811
1812	* java/org/librdf/redland/Model.java (as_stream):
1813	Added - use Use librdf_model_as_stream or with a context
1814	node, use librdf_model_context_as_stream
1815
1816	* python/RDF.py (Model.as_stream): Use librdf_model_context_as_stream
1817
1818	* perl/lib/RDF/Redland/Model.pm:
1819	Fix uses of RDF::Redland::Node::_ensure($node) to use it as a redland
1820	node.
1821	(as_stream): Take optional context node, promote as necessary,
1822	using librdf_model_context_as_stream. Add documentation.
1823
1824	* Redland.i: Added librdf_model_context_as_stream
1825
1826	* librdf/rdf_model.c, librdf/rdf_model.h:
1827	Added librdf_model_context_as_stream, deprecating
1828	librdf_model_context_serialize as confusing with the
1829	librdf_serializer class and mixing US/UK spelling.
1830
1831	* perl/serialize.pl, demos/demo.pl, perl/example.pl: Use as_stream
1832
1833	* perl/lib/RDF/Redland/Model.pm (as_stream):
1834	Added, deprecating serialise and serialise.
1835
1836	* librdf/rdf_model.c:
1837	Added librdf_model_as_stream, deprecating librdf_model_serialise
1838	as confusing with the librdf_serializer class.
1839
1840	* librdf/rdf_model.h, Redland.i: Added librdf_model_as_stream
1841
1842	* tcl/Makefile.am: TCL_INCLUDES
1843
1844	* php/php.ini: load shared library from .
1845
1846	* php/Makefile.am:
1847	Remove libtool again.  Try "if OSX, else rest of world" approach.
1848
1849	* configure.ac:
1850	TCL_INCLUDE now TCL_INCLUDES and blank if not found, otherwise -Idir
1851
1852	* tcl/Makefile.am:
1853	Remove libtool again.  Try "if OSX, else rest of world" approach.
1854
1855	* configure.ac: default TCL_INCLUDE to /usr/include
1856
1857	* ruby/Makefile.am: minor depends
1858
1859	* ruby/Makefile.am:
1860	Remove libtool again.  Try "if OSX, else rest of world" approach.
1861	Package now 'redland' to match ruby convention.
1862
1863	* ruby/example.rb: Now redland
1864
1865	* tcl/Makefile.am: Don't -I-I@TCL_INCLUDE@
1866
1867	* configure.ac:
1868	tcl version tweak -nonewline since OSX does silly things
1869
1870	* tcl/Makefile.am: Removed README
1871
1872	* tcl/README: Moved into ../docs/tcl.html
1873
1874	* tcl/Makefile.am:
1875	Use @TCL_VERSION@ for the library name and -I@TCL_INCLUDE@
1876
1877	* configure.ac:
1878	--with-perl/python/java/tcl/php/ruby now either enable the language
1879	or enable and set the binary.  Always try to find the version of
1880	the language before building the API automatically.
1881	Hunt for Tcl tcl.h and Java JDK JNI headers in various places.
1882	Report the languages available and language APIs built.
1883
1884	* php/Makefile.am: comments.
1885	testing is optional, php program might not exist
1886
1887	* php/Makefile.am:
1888	Very complex build and install using a libfake.la so I don't have to
1889	care about details of building shared object and dynamically loaded
1890	libraries.  No OSX specific fixes here since I can't see what
1891	the convention is.
1892
1893	* tcl/Makefile.am: Be verbose in pkgIndex.tcl
1894
1895	* ruby/Makefile.am: docs
1896
1897	* tcl/Makefile.am: No -module here
1898
18992003-08-27  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
1900
1901	* tcl/Makefile.am:
1902	Very complex build and install using a libfake.la so I don't have to
1903	care about details of building shared object and dynamically loaded
1904	libraries (such as on OSX).  The OSX specific naming is burnt in here
1905	since the dynamically loaded library must be called Redland.dylib
1906
1907	* ruby/Makefile.am:
1908	Very complex build and install using a libfake.la so I don't have to
1909	care about details of building shared object and modules (such
1910	as on OSX).  OSX specific naming have to be burnt in here since
1911	shared modules must be called Redland.bundle
1912
1913	* ruby/Makefile.am, tcl/Makefile.am:
1914	Make build and installing work again, without libtool.
1915
1916	* tcl/README: Update Tcl building info
1917
1918	* tcl/test.tcl: Back to auto_path .
1919
1920	* configure.ac: BDB check update again.
1921	Report discovered BDB version in summary
1922
1923	* configure.ac: Use bdbc_ for temporary variables in BDB checking code.
1924
1925	* perl/Makefile.PL: Revert to working version.  No need for
1926	builddir/srcdir things.
1927
1928	* perl/Makefile.am: Revert: Remove inplace editing of PERL_MAKEFILE
1929
1930	* configure.ac: Another major BDB hunt and validate.  This time
1931	check for db.h with version numbers.
1932
1933	* perl/Makefile.PL: Set FULLEXT to RDF/Redland
1934
1935	* perl/Makefile.am: Make sure PERL really uses the right FULLEXT,
1936	BASEEXT and BOOTSTRAP values
1937
1938	* librdf/rdf_hash_bdb.c:
1939	Remove BDB_CLOSE/FD_2_ARGS ifdef sequence at start - now tested in
1940	configure.
1941	Rename to HAVE_BDB_CLOSE/FD_2_ARGS
1942
1943	* configure.ac: bdb_dbname test was inverted
1944
1945	* configure.ac: use "if test ...; then", not "if [ ... ]; then"
1946
1947	* configure.ac: I give up.  Put OSX fink hints here - look for /sw/bin.
1948	Add more Sleepycat/Berkeley DB checks, more guesswork and hunting for
1949	BDB headers in /usr/include/db* subdirectories.
1950
1951	* perl/Makefile.am: Use CFLAGS, not MEM.
1952
1953	* perl/Makefile.PL: Use CFLAGS, not MEM.
1954	Use redland-src-config --libs not --static-libs
1955
1956	* librdf/rdf_hash_bdb.c (librdf_hash_bdb_open):
1957	More BDB #ifdef mess for db->open 6 or 7
1958	arguments.
1959
1960	* librdf/rdf_utf8.c, librdf/rdf_uri.c, librdf/rdf_stream.c,
1961	librdf/rdf_storage.c, librdf/rdf_statement.c,
1962	librdf/rdf_serializer.c, librdf/rdf_query.c, librdf/rdf_parser.c,
1963	librdf/rdf_node.c, librdf/rdf_model.c, librdf/rdf_iterator.c,
1964	librdf/rdf_heuristics.c, librdf/rdf_hash.c, librdf/rdf_files.c,
1965	librdf/rdf_digest.c, librdf/rdf_concepts.c:
1966	When running a standalone test which has a STANDALONE #define set
1967	then do not compile the code from the module, but use the code in the
1968	linked librdf - all the tests link with this.  This prevents
1969	complaints about dual symbols from the OSX linker, and crashes with
1970	statics that store the pointers to factories (models, storages,
1971	parsers).
1972
19732003-08-26  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
1974
1975	* configure.ac: Added AC_HEADER_TIME and checks for time.h, sys/time.h
1976	for gettimeofday
1977
1978	* librdf/rdf_parser_raptor.c
1979	(librdf_parser_raptor_generate_id_handler): Added to use
1980	librdf_world_get_genid to get a unique genid if the user does not
1981	provide one.
1982	(librdf_parser_raptor_parse_file_as_stream,
1983	librdf_parser_raptor_parse_as_stream_common,
1984	librdf_parser_raptor_parse_into_model_common): Use
1985	librdf_parser_raptor_generate_id_handler to generate IDs.
1986
1987	* librdf/rdf_node.c (librdf_new_node_from_blank_identifier):
1988	If a NULL identifier
1989	is passed in, use librdf_world_get_genid to get a unique genid.
1990
1991	* librdf/rdf_init.c:
1992	Added a slew of time related headers for gettimeofday
1993	(librdf_new_world): Get the startup time to init world genid_base.
1994	Set genid_counter to 1.
1995	(librdf_world_set_feature): Support
1996	LIBRDF_WORLD_FEATURE_GENID_BASE, LIBRDF_WORLD_FEATURE_GENID_COUNTER
1997	both integers.
1998	(librdf_world_get_genid): Added to return a new
1999	genid of the form "r"+base+"r"+(counter++)
2000
2001	* librdf/rdf_init.h: World gains genid_base and genid_counter.
2002	New world features LIBRDF_WORLD_FEATURE_GENID_BASE,
2003	LIBRDF_WORLD_FEATURE_GENID_COUNTER
2004	New internal librdf_world_get_genid
2005
2006	* docs/fix-python-xhtml: +email
2007
2008	* docs/fix-python-xhtml: -email
2009
2010	* docs/fix-python-xhtml: words
2011
2012	* docs/fix-python-xhtml: New pydoc, new bad use of ID.
2013	Skip the huge #commented heading in the source.
2014
2015	* examples/example2.c:
2016	Updated to a slightly more useful example - parsing from
2017	string content and adding/checking/removing a statement.
2018
2019	* python/redlandtest.py (testIterateModel, testContains): Added.
2020
2021	* librdf/rdf_storage.c: Revert, remove contexts check here.
2022
2023	* librdf/rdf_storage_list.c (librdf_storage_list_contains_statement):
2024	Handle contains with
2025	contexts using librdf_storage_list_find_statements.
2026
2027	* librdf/rdf_storage_hashes.c
2028	(librdf_storage_hashes_contains_statement): Handle contains with
2029	contexts using librdf_storage_hashes_find_statements.
2030
2031	* librdf/rdf_parser_raptor.c: removed unused variable
2032
2033	* librdf/rdf_storage.c (librdf_storage_hashes_contains_statement):
2034	Revert fix.
2035
2036	* librdf/rdf_storage_hashes.c
2037	(librdf_storage_hashes_contains_statement): Move the fix for
2038	stores with contexts into librdf_storage_contains_statement
2039
2040	* librdf/rdf_storage_list.c
2041	(librdf_storage_list_contains_statement): Build a
2042	librdf_storage_list_node to use to run librdf_list_contains.
2043
2044	* librdf/rdf_storage.h:
2045	Added index_contexts flag to librdf_storage_factory_s.
2046
2047	* python/RDF.py (Model.__iter__): Fix to return an iter
2048
2049	* python/setup.py:
2050	Remove MEM, MEM_LIBS code - rely on CFLAGS and LDFLAGS being passed in.
2051	Move version code to top.
2052
2053	* python/Makefile.am: Pass on CFLAGS and LDFLAGS to python setup.py
2054
2055	* python/example.py: empty statement
2056
2057	* python/RDF.py: words in copyright
2058
2059	* python/test/test.py, python/example.py:
2060	Updated to use 0.9 api features
2061
2062	* ruby/Makefile.am: test-ruby fix shared dir
2063
2064	* ruby/Makefile.am: LIBRUBYARG works 1.6-1.8
2065
2066	* python/redlandtest.py:
2067	Update by Edd Dumbill to test the 0.9 RDF.py changes.
2068
2069	* python/RDF.py:
2070	Major update to use Python 2.2+ idioms and features by Edd Dumbill.
2071
2072	General remarks
2073
2074	  * Removed string exceptions and replaced with RedlandError ones
2075
2076	  * Where underlying Redland C objects were unexpectedly null, raise
2077	    exceptions rather than returning None, "" or [] as appropriate.
2078
2079	  * Raise exceptions if Redland C constructors fail in Python
2080	    constructors.
2081
2082	  * Did quite a lot of documentation updating, where possible
2083	    demonstrating preferred Pythonic usages.
2084
2085	  * Added more unit tests to test changed functionality.
2086
2087	RDF.Node
2088
2089	  * Constructor now accepts Uri to make a resource/property node, or
2090	    a string to make a string literal
2091
2092	  * Removed usage of node_type() in favour of is_resource(), is_blank()
2093	    etc methods.
2094
2095	  * DEPRECATED get_blank_identifier() etc methods in favour of
2096	    node.blank_identifier etc properties.  Raise exception if properties
2097	    inconsistent with the node type are requested.
2098
2099	RDF.Statement
2100
2101	  * No need to name subject, predicate, object in constructor any more.
2102	    Uris or string literals accepted in place of nodes in constructor
2103	    argument.
2104
2105	  * __getattr__ method deleted, using new-style property() for
2106	    subject, predicate, object
2107
2108	RDF.Model
2109
2110	  * Deleted get_*_iterator methods
2111
2112	  * Renamed sources() to get_sources(), targets() to get_targets(),
2113	    arcs() to get_predicates().  Retained old method names as aliases.
2114
2115	  * Added get_sources_context(), get_targets_context(),
2116	    get_predicates_context() which return (node, context) tuples.
2117
2118	  * Amended get_source(), get_sources() etc methods so that Uri and
2119	    string literals were acceptable as shortcut types for nodes.
2120
2121	  * Added find_statements_context() which returns (statement, context)
2122	    tuples.
2123
2124	  * Renamed context_remove_statements() to
2125	    remove_statements_with_context(). Retained old method name as an
2126	    alias.
2127
2128	  * Added __delitem__ method so del[statement] and del[statement,
2129	    context] work.
2130
2131	  * Added append() method so append(statement) and append(statement,
2132	    context) work.  Suggest that append() is used in preference to
2133	    add_statement() for Python idiomatic usage.
2134
2135	  * DEPRECATED serialise() in favour of as_stream().
2136
2137	  * Added as_stream_context() to serialise (statement, context) tuples.
2138
2139	  * Exception raised if len() is attempted on model with a non-countable
2140	    storage.
2141
2142	  * DEPRECATED Model.add(), Model.add_typed_literal_statement() usages:
2143	    now that constructing Statements is easier, it's incongruous to have
2144	    these in the model.  Additionally it saves reproducing various bits
2145	    of error checking that properly belong in the Node() constructor.
2146
2147	  * Implemented __contains__() so "if statement in model" and
2148	    "if (statement, context) in model" work as expected using the more
2149	    efficient Redland C methods where possible.
2150
2151	RDF.Stream
2152
2153	  * DEPRECATED Stream.context_iter().  Use in preference the _context
2154	    variants of the appropriate Model methods.  This leads to fewer
2155	    lines of code.
2156
2157	RDF.Uri
2158
2159	  * Amended constructor so strings or Uri instances can be passed as
2160	    the first argument, without named parameters being required, and
2161	    the right thing still happen.
2162
2163	----
2164	I did some indenting and white space editing for consistency
2165	with the existing code.
2166
2167	* librdf/rdf_list.c (librdf_list_iterator_get_method): Oops
2168
2169	* librdf/rdf_hash.c (librdf_hash_get_all_iterator_get_method): oops
2170
2171	* java/Makefile.am:
2172	Use check-local again, since we don't actually make programs called
2173	test1 and test2.
2174
2175	* Redland.i: Add prototypes for static, internal methods
2176
2177	* python/Makefile.am: Pass in CFLAGS to python
2178
2179	* librdf/rdf_hash.c (librdf_hash_get_all_iterator_get_method): Give
2180	an error for an unknown method and return NULL.
2181
2182	* librdf/rdf_list.c (librdf_list_iterator_get_method):
2183	Check method is get_object
2184	and return an error if it isn't.
2185
2186	* librdf/rdf_storage.c
2187	(librdf_storage_stream_to_node_iterator_get_method): Provide
2188	iterator get_context method as well as get_object, using the
2189	internal stream.
2190
2191	* ruby/Makefile.am: Made an rubylib make definition
2192
2193	* tcl/Makefile.am: Made an tcllib make definition
2194
2195	* tcl/Makefile.am:
2196	Interrogate tclsh for versions, and then guess include paths and
2197	library name.
2198
2199	* tcl/test.tcl, tcl/example.tcl: Back to redland
2200
2201	* tcl/test.tcl, tcl/example.tcl: Tcl package now Redland
2202
2203	* configure.ac: Look for tclsh for TCL
2204
2205	* ruby/Makefile.am: More libtool flags
2206
2207	* ruby/Makefile.am: Build shared objects again.
2208
2209	* ruby/Makefile.am: Don't depend on build-ruby
2210
2211	* librdf/rdf_storage_hashes.c
2212	(librdf_storage_hashes_contains_statement): Use
2213	librdf_storage_hashes_find_statements to make this work when
2214	contexts are being used.
2215
2216	* librdf/rdf_node.c (librdf_node_equals): Doc fix
2217
2218	* librdf/rdf_storage_list.c (librdf_storage_list_node_equals):
2219	When not using contexts, don't
2220	check the context nodes.
2221
2222	* Redland.i (librdf_call_python_message, librdf_call_perl_message):
2223	Fix use of
2224	vsnprintf in perl and python message callbacks to properly copy
2225	va_list using va_copy.  Same bug that happened in raptor.
2226
22272003-08-25  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
2228
2229	* java/Makefile.am: Added test-java again
2230
2231	* tcl/Makefile.am: Added test-tcl again
2232
2233	* ruby/Makefile.am: Added test-ruby again
2234
2235	* python/example.py: Modernise the python to 2.2+
2236
2237	* python/RDF.py: Throughout:
2238	Updated to use new Python classes (2.2+)
2239	Replace __getattr__/__setattr__ with property() method.
2240
2241	* python/Makefile.am: check-local now also does unittest-python
2242
2243	* raptor/configure.ac: Bumped version to 0.9.13
2244
2245	* raptor/raptor_parse.c (raptor_start_element_grammar):
2246	With rdf:datatype, do not lose the
2247	URI string pointer.  For rdf:ID, do not allocate the URI twice.
2248
2249	* raptor/raptor_parse.c (raptor_generate_statement):
2250	Do not set language when a datatype is given.
2251
2252	* raptor/raptor_xml_writer.c (raptor_new_xml_writer):
2253	Initialise writer buffer to an empty string
2254	to start (i.e. just \0).
2255	(raptor_xml_writer_start_element): Now assume buffer is always
2256	present, remove empty buffer case.
2257	(raptor_xml_writer_end_element,raptor_xml_writer_cdata): Handle 0
2258	length case, no strncpy.
2259
2260	* raptor/tests/Makefile.am: Added ex-51.
2261	Fix daml+oil test.
2262
2263	* raptor/tests/ex-51.out, raptor/tests/ex-51.rdf:
2264	Check empty XML literal works
2265
2266	* raptor/tests/ex-41.out: No language for datatyped literals.
2267
2268	* raptor/tests/daml-oil.rdf, raptor/tests/daml-oil.out,
2269	raptor/tests/Makefile.am: Updated to DAML+OIL schema 2001-03 as
2270	defined in http://www.daml.org/2001/03/daml+oil-index.html
2271
2272	* raptor/tests/daml-oil.out, raptor/tests/daml-oil.rdf: Added
2273	2000-11-30 http://www.cs.man.ac.uk/%7Ehorrocks/DAML-OIL/daml-oil.rdf
2274
2275	* raptor/tests/owl-schema.rdf, raptor/tests/owl-schema.out:
2276	Updated OWL schema http://www.w3.org/2002/07/owl to match
2277	that given in OWL Reference 2003-08-18 CR
2278	at http://www.w3.org/TR/2003/CR-owl-ref-20030818/#appB
2279
2280	* raptor/libraptor.3: Updated for 0.9.12
2281
2282	* python/RDF.py (Statement._get_subject):
2283	Missed accidently when updating to do more copies.
2284
2285	* configure.ac: No languages by default.
2286
22872003-08-24  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
2288
2289	* perl/Makefile.PL: Include -I builddir librdf dir to get rdf_config.h
2290
2291	* Makefile.am: make languages after core libs
2292
2293	* perl/Makefile.PL: More attempts at src/builddir fix.
2294
2295	* perl/Makefile.am: Fix src/builddir for output of MakeMaker
2296
2297	* tcl/Makefile.am: again
2298
2299	* tcl/Makefile.am: oops, -c to compile
2300
2301	* ruby/Makefile.am:
2302	This dir is now compiled and installed conditional on ruby being
2303	enabled with --with-ruby (off by default).
2304	Move -local targets into standard 'make' and 'make install' ones.
2305	Try to compile with the right Ruby shared library and install in
2306	the Ruby libs dir.
2307
2308	* tcl/Makefile.am: Use @TCL@
2309
2310	* tcl/Makefile.am:
2311	This dir is now compiled and installed conditional on tcl being
2312	enabled with --with-tcl (off by default).
2313	Move -local targets into standard 'make' and 'make install' ones.
2314	Try to compile the Tcl shared library and install in the Tcl
2315	libs dir.  Finding the tcl.h includes is impossible, so note
2316	that in the README.
2317
2318	* tcl/README: Tcl building issues
2319
2320	* php/Makefile.am: php installs now
2321
2322	* configure.ac:
2323	In checking for progs, hunt for perl, python etc. rather than  names.
2324	Added --with-perl/python/java/php/tcl/ruby with optional
2325	argument =PATH to set the script.  This enables the particular
2326	language to be built.  Present defaults are perl and python are
2327	enabled.
2328	Move --with-ecma-cli to be nearby and accept 'no' also.
2329	Moved --with-jdk to be nearby.
2330	The subdirectories called with standard 'make' and 'make install'
2331	now are based on languages.
2332	Report the languages configured in the build summary.
2333
2334	* python/Makefile.am:
2335	This dir is now compiled and installed conditional on python being
2336	enabled with --with-python (by default).
2337	Move -local targets into standard 'make' and 'make install' ones
2338	and create a fake build and install to keep automake happy, since
2339	we are using python's Distutils to do the real work.
2340
2341	* perl/Makefile.am:
2342	This dir is now compiled and installed conditional on perl being
2343	enabled with --with-perl (by default).
2344	Move -local targets into standard 'make' and 'make install' ones
2345	and create a fake build and install to keep automake happy, since
2346	we are using perl's MakeMaker to do the real work.
2347
2348	* java/Makefile.am:
2349	This dir is now compiled and installed conditional on java being
2350	enabled with --with-java, so move -local targets into standard
2351	'make' and 'make install' ones.
2352	Install both the shared library and jar.
2353
2354	* java/Makefile.am: core_wrap.c without makefile variables
2355
2356	* java/Makefile.am:
2357	EXTRA_LTLIBRARIES is broke - it won't build shared libraries.  So
2358	fake it using lib_LTLIBRARIES and then override the installation for
2359	install-javalibLTLIBRARIES: to do nothing.
2360
2361	* java/Makefile.am:
2362	Shared library now librdf-java and built using libtool.
2363
2364	* java/org/librdf/redland/World.java, java/redland-fragment.java:
2365	Now rdf-java (aka librdf-java under unixen)
2366
2367	* librdf/rdf_init.c: Now 2003
2368
23692003-08-23  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
2370
2371	* java/org/librdf/redland/Node.java:
2372	(constructors) Update to always copy rather than deal with shared
2373	nodes.
2374	(isResource, isLiteral, isBlank): Added.
2375
2376	* java/org/librdf/redland/Statement.java:
2377	(constructors, getSubject, getPredicate, getObject) Update node and
2378	statements to always copy rather than deal with shared.
2379
2380	* java/org/librdf/redland/Stream.java:
2381	Returning copied statements is default.
2382
2383	* java/org/librdf/redland/Iterator.java:
2384	Returning copied nodes is default.
2385
2386	* configure.ac: For --with-jdk, hunt for the machine-dependent subdir
2387
2388	* java/Makefile.am: Use JDK_INCLUDES
2389
2390	* java/org/librdf/redland/Parser.java:
2391	(parse) Added methods parsing content ina  string into a model
2392	or as a stream of statements.
2393
2394	* java/org/librdf/redland/Model.java: sync has no return
2395
2396	* configure.ac: Added --with-jdk to specify where Java lives
2397
2398	* java/org/librdf/redland/Model.java,
2399	perl/lib/RDF/Redland/Model.pm (sync): Added calling
2400	librdf_model_sync
2401
2402	* Redland.i: Added librdf_model_sync
2403
2404	* librdf/rdf_model_storage.c (librdf_model_storage_sync):
2405	Added, invoking librdf_storage_sync
2406
2407	* librdf/rdf_model.c (librdf_model_sync):
2408	Added, invoking it in the implementation via new
2409	factory method sync.
2410
2411	* librdf/rdf_model.h: Added librdf_model_sync and factory method.
2412
2413	* librdf/rdf_storage_hashes.c (librdf_storage_hashes_sync):
2414	Added, implementing sync method.
2415
2416	* librdf/rdf_storage.c: Added librdf_storage_sync
2417
2418	* librdf/rdf_storage.h: Added librdf_storage_sync and factory method.
2419
2420	* python/Makefile.am, perl/Makefile.am: clean more
2421
2422	* perl/serialize.pl: Updated API tweaks
2423
2424	* perl/lib/RDF/Redland/Node.pm (new_from_literal):
2425	Ensure is_wf_xml is an integer.
2426
2427	* perl/lib/RDF/Redland/Model.pm (remote_statement):
2428	Allow NODE NODE NODE [CONTEXT] args
2429
2430	* perl/lib/RDF/Redland/Statement.pm (new):
2431	Promote node arguments to redland nodes using
2432	RDF::Redland::Node::_ensure.
2433
2434	* perl/lib/RDF/Redland/Node.pm (_ensure):
2435	Added, to promote other objects to redland nodes
2436
2437	* perl/lib/RDF/Redland/Model.pm (add): Now call add_statements.
2438	(add_statements,remove_statement,add_statements,remove_statements,
2439	remove_context_statements): Promote node arguments to redland nodes
2440	using RDF::Redland::Node::_ensure.
2441
2442	* perl/lib/RDF/Redland/Statement.pm (new_from_nodes):
2443	Fix call to constructor
2444
2445	* perl/example.pl:
2446	Test add_statement(NODE, NODE, NODE) form - with same NODE
2447
2448	* perl/lib/RDF/Redland/Model.pm (add_statement):
2449	Accept NODE NODE NODE [CONTEXT] as arguments too.
2450
24512003-08-22  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
2452
2453	* Redland.i: typo
2454
2455	* perl/lib/RDF/Redland/Parser.pm:
2456	(parse_string_as_stream, parse_string_into_model):
2457	Added for parsing strings.  Note that the base_uri is required.
2458
2459	* python/RDF.py:
2460	(Parser.parse_string_as_stream, Parser.parse_string_into_model):
2461	Note base_uri is required in docs, raise an error if it isn't there.
2462
2463	* python/RDF.py:
2464	(Parser.parse_string_as_stream, Parser.parse_string_into_model):
2465	Added.
2466
2467	* librdf/rdf_parser_raptor.c
2468	(librdf_parser_raptor_parse_as_stream_common,
2469	(librdf_parser_raptor_parse_uri_into_model_common): Ensure
2470	source_uri is set up correctly.  Refuse to work without a
2471	base_uri.
2472
2473	* python/test/test.py: Added test with parser.parse_string_as_stream
2474
2475	* librdf/redland.spec.in: try to get perl install working again
2476
2477	* Redland.i: Added librdf_parser_parse_string_as_stream,
2478	librdf_parser_parse_string_into_model
2479
2480	* librdf/rdf_parser_raptor.c: Added new methods for implementing
2481	librdf_parser_parse_string_as_stream,
2482	librdf_parser_parse_string_into_model
2483	(librdf_parser_raptor_parse_as_stream_common): New, core
2484	work for both string and uri parsing into a stream.
2485	(librdf_parser_raptor_parse_uri_into_model_common): New, core
2486	work for both string and uri parsing into a model.
2487
2488	* librdf/rdf_parser.h (librdf_parser_parse_string_as_stream,
2489	librdf_parser_parse_string_into_model): Added
2490
2491	* librdf/rdf_parser.c (librdf_parser_parse_string_as_stream,
2492	librdf_parser_parse_string_into_model): Added
2493
24942003-08-21  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
2495
2496	* raptor/Makefile.am: Remove -static from test links
2497
2498	* raptor/raptor_uri.c (main):
2499	Test xmlbase and retrievable URI tranforms.
2500
2501	* raptor/raptor_uri.c (raptor_uri_resolve_uri_reference):
2502	Handle #s relative to a uri-reference with a #fragment.
2503
2504	* raptor/raptor_www.c:
2505	(raptor_www_fetch) Use raptor_new_uri_for_retrieval to ensure
2506	that the URI-reference fragments are removed, and the URI path exists.
2507
2508	* raptor/raptor.h: Added raptor_new_uri_for_retrieval
2509
2510	* raptor/raptor_uri.c (raptor_new_uri_for_retrieval):
2511	Added, strips fragments and ensures / path is present.
2512
2513	* raptor/raptor_xml_writer.c (raptor_xml_writer_start_element,
2514	raptor_xml_writer_end_element): Use size_t for lengths.
2515
2516	* raptor/raptor_xml_writer.c (raptor_xml_writer_start_element):
2517	Set content_element_seen in parent
2518	only if there is a parent.
2519	(raptor_xml_writer_end_element): Change current_element to parent
2520	only if there is a current element.
2521
2522	* raptor/tests/Makefile.am:
2523	Pull out may-fail NFC checks into a separate set and don't exit 1
2524	if they do fail.  Failure is possible since it requires GNOME glib2
2525	which isn't always available.
2526
2527	* librdf/redland.spec.in: Fix perl CORE dir
2528
2529	* librdf/redland.spec.in: Removed duplicate perl CORE shared objects
2530
2531	* librdf/redland.spec.in: Added redland-db-upgrade.1 to devel
2532
25332003-08-20  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
2534
2535	* perl/Makefile.PL:
2536	Use .. for redland-src-config and add check it is there.
2537
2538	* python/setup.py:
2539	Use .. for redland-src-config and add an os.access check for it
2540
2541	* redland-src-config.in: test ! -r
2542
2543	* redland-src-config.in: Stop if cannot find raptor-src-config
2544
2545	* python/setup.py: append define_macros only on match.
2546
2547	* python/setup.py: Oh yes it is.
2548
2549	* python/setup.py: redland-src-config is not in top_srcdir
2550
2551	* python/redlandtest.py, python/setup.py, python/example.py:
2552	Set #! to /usr/bin/python
2553
2554	* python/RDF.py:
2555	Update classes to always return copies of Nodes, Statements
2556	from streams, iterators such as model.find_statements.
2557	The user should now not need care about shared versus copying
2558	of returned values but just use them.
2559
2560	* python/setup.py, python/Makefile.am:
2561	Pass MEM, MEM_LIBS to python compiling C
2562
2563	* perl/lib/RDF/Redland/Statement.pm:
2564	(subject,predicate,object) Copy redland node for librdf set methods.
2565
2566	* perl/lib/RDF/Redland/Node.pm: POD fixes
2567
2568	* perl/example.pl: Minor updates to use newer API calls.
2569
2570	* perl/lib/RDF/Redland/Statement.pm:
2571	(subject,predicate,object) Docs - note no copying neeeded.
2572	(predicate): Minor typo
2573
2574	* perl/lib/RDF/Redland/RSS.pm (Model.DESTROY): Call super to tidy up
2575	(Node.new): Debugging
2576	(Node.DESTROY): Call super to tidy up
2577	(properties): Do less work, no need to copy.
2578
2579	* perl/lib/RDF/Redland/Node.pm (new): Invoke clone properly.
2580
2581	* perl/lib/RDF/Redland/URI.pm (new):
2582	Constructor now copies as well as building URIs.  Takes
2583	string literals or URIs by sniffing for classes.
2584	(new_from_uri): Replaced by new
2585	(clone): Another way to copy a URI.
2586	Document these changes
2587
2588	* perl/lib/RDF/Redland/Iterator.pm:
2589	Update for Node API change and no need to copy here
2590	(current, context): Do not copy returned node.
2591
2592	* perl/lib/RDF/Redland/Stream.pm:
2593	Update for Statement API change and no need to copy here
2594	(current, context): Do not copy returned statement.
2595
2596	* perl/lib/RDF/Redland/Model.pm:
2597	Update for Node, Statement API changes and no need to copy here
2598	(sources,targets,arcs): Don't copy statements to new lists.
2599
2600	* perl/lib/RDF/Redland/Statement.pm (new):
2601	Constructor now copies as well as building statements.  Takes
2602	string literals, URIs by sniffing for classes.
2603	(new_from_statement,new_from_nodes): Replaced by new.
2604	(clone): Another way to do new_from_statement
2605	(subject,predicate,object): Do less work, always return a copy.
2606	Document these changes
2607
2608	* perl/lib/RDF/Redland/Node.pm (new):
2609	Constructor now builds resources, literals, URIs by sniffing
2610	for classes.
2611	(new_from_literal,new_from_typed_literal): Replaced with new_literal
2612	(new_xml_litearl): Added
2613	(new_from_node): Replaced with clone
2614	Document these changes
2615
2616	* perl/rss-dump.pl:
2617	Comment out (working) code that lets perl do the URI retrieval,
2618	assume raptor has that.
2619	Slight updates for changed perl API.
2620
2621	* librdf/rdf_node.c (main):
2622	Test: Revert accidently removed librdf_free_uri
2623
2624	* perl/Makefile.am, perl/Makefile.PL:
2625	Pass on MEM to CFLAGS when building perl.
2626
2627	* librdf/rdf_parser_raptor.c:
2628	Use LIBRDF_FREE for data returned from raptor.  This is OK
2629	as long as raptor is in the redland sources.  Otherwise it'll
2630	need to be SYSTEM_FREE.
2631
2632	* librdf/rdf_hash_bdb.c:
2633	Use SYSTEM_FREE for data allocated by BDB via malloc()
2634
2635	* librdf/rdf_init.c: Use SYSTEM_MALLOC/FREE for mutexes.
2636	(librdf_system_malloc, librdf_system_free): Added for dmalloc
2637	debugging.
2638
2639	* librdf/librdf.h:
2640	Added SYSTEM_MALLOC and SYSTEM_FREE for routines that return
2641	genuine malloc() and free()ed memory - outside Redland typically.
2642
2643	* raptor/raptor_general.c (raptor_check_ordinal):
2644	parentheses just for gcc
2645
26462003-08-19  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
2647
2648	* python/setup.py: license now license apparently
2649
2650	* utils/redland-db-upgrade.1: fix db names
2651
2652	* utils/Makefile.am: Added redland-db-upgrade.1
2653
2654	* utils/redland-db-upgrade.1: Manpage for redland-db-upgrade
2655
2656	* librdf/rdf_node.c:
2657	Make nodes immutable - remove all node class set methods.
2658	(librdf_new_node_from_literal): Now just calls
2659	librdf_new_node_from_typed_literal.
2660	(librdf_new_node_from_typed_literal):
2661	librdf_new_node_set_typed_literal_value inlined here.
2662	(librdf_new_node_from_blank_identifier):
2663	librdf_set_blank_identifier inlined here.
2664	(librdf_new_node_from_node): Call the appropriate node constructors
2665	rather than malloc a new node and use the set methods.
2666	(librdf_node_set_uri, librdf_node_set_type,
2667	librdf_node_set_typed_literal_value,
2668	librdf_node_set_blank_identifier): Deleted and inlined where used.
2669	(librdf_node_set_li_ordinal,librdf_node_set_literal_value): Deleted,
2670	never used in this module.
2671	(librdf_node_decode): Call the appropriate node constructors
2672	rather than malloc a new node and use the set methods.
2673	(main): Remove node set methods from test code.
2674
2675	* librdf/rdf_node.h:
2676	Make nodes immutable - removed all public set methods into rdf_node.c
2677
2678	* java/org/librdf/redland/Node.java:
2679	Make nodes immutable - remove set methods setURI, setType,
2680	setLiteralValue.
2681
2682	* perl/lib/RDF/Redland/Node.pm:
2683	Make nodes immutable.  Remove set parts of methods uri,
2684	blank_identifier and type.  Remove method set_literal_value.
2685
2686	* python/RDF.py (Class Node):
2687	Make nodes immutable - remove set methods.
2688
2689	* Redland.i: Make nodes immutable - remove node class set methods.
2690
2691	* Redland.i: comment out calling python exceptions for now
2692
26932003-08-17  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
2694
2695	* configure.ac: Remove MEM=-DLIBRDF_MEMORY_DEBUG if no dmalloc present.
2696
2697	* librdf/rdf_uri.c, librdf/rdf_stream.c, librdf/rdf_storage.c,
2698	librdf/rdf_statement.c, librdf/rdf_serializer.c,
2699	librdf/rdf_query.c, librdf/rdf_parser.c, librdf/rdf_node.c,
2700	librdf/rdf_model.c, librdf/rdf_iterator.c,
2701	librdf/rdf_heuristics.c, librdf/rdf_hash.c, librdf/rdf_files.c,
2702	librdf/rdf_digest.c, librdf/rdf_concepts.c (main): In test code,
2703	remove calls to librdf_memory_report for old internal memory
2704	debugging code.
2705
2706	* librdf/librdf.h:
2707	Remove LIBRDF_MEMORY_DEBUG and internal memory loss debugging code.
2708	External tools such as dmalloc work a lot better.
2709
2710	* librdf/Makefile.am: Removed rdf_memory.c
2711
2712	* librdf/rdf_memory.c: Memory debugging code superceeded by better
2713	external tools such as dmalloc
2714
2715	* librdf/rdf_hash_bdb.c, configure.ac:
2716	Added BDB 4.0 and 4.1 open interface support - 6 or 7 arguments.
2717
2718	* raptor/raptor_xml_writer.c:
2719	(raptor_xml_writer_end_element) Reset the current_element pointer
2720	on finishing.  Makes any succeeding cdata do the right thing.
2721
2722	* librdf/redland.spec.in: Updates for new perl module names
2723
2724	* raptor/rdfdump.c: Inside redland, don't call raptor_init/finish,
2725	it's done by redland's world.
2726
27272003-08-13  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
2728
2729	* raptor/raptor_rss.c (raptor_rss_parse_chunk):
2730	Stop working aftera a user abort of the parser.
2731
2732	* raptor/raptor_general.c (raptor_check_ordinal): c is not const
2733
2734	* raptor/rdfdump.c, raptor/raptor_xml_writer.c,
2735	raptor/raptor_xml.c, raptor/raptor_www_libwww.c,
2736	raptor/raptor_utf8.c, raptor/raptor_uri.c, raptor/raptor_set.c,
2737	raptor/raptor_sax2.c, raptor/raptor_qname.c,
2738	raptor/raptor_parse.c, raptor/raptor_namespace.c,
2739	raptor/raptor_locator.c, raptor/raptor_libxml.c,
2740	raptor/raptor_identifier.c, raptor/raptor_general.c,
2741	raptor/ntriples_parse.c: Move dmalloc includes into
2742	raptor_internal.h and use everywhere.
2743
2744	* raptor/raptor_internal.h:
2745	Add raptor dmalloc includes here to ensure all raptor code uses it
2746	or not consistently.
2747
2748	* librdf/rdf_parser_raptor.c: (librdf_parser_raptor_error_handler,
2749	librdf_parser_raptor_warning_handler):
2750	Remove inadvisable use of raptor_parser as a variable name.
2751	(librdf_parser_raptor_parse_uri_into_model): Zap unused world.
2752
2753	* librdf/rdf_hash.c (librdf_hash_from_array_of_strings):
2754	Fix return value.
2755
2756	* examples/Makefile.am: Added redland_dbus
2757
2758	* examples/redland_dbus.c: Initial import
2759
27602003-08-12  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
2761
2762	* librdf/rdf_uri.c, librdf/rdf_stream.c,
2763	librdf/rdf_storage_list.c, librdf/rdf_storage_hashes.c,
2764	librdf/rdf_storage.c, librdf/rdf_statement.c,
2765	librdf/rdf_serializer_rdfxml.c, librdf/rdf_serializer.c,
2766	librdf/rdf_query.c, librdf/rdf_parser_raptor.c,
2767	librdf/rdf_parser.c, librdf/rdf_node.c, librdf/rdf_model.c,
2768	librdf/rdf_init.c, librdf/rdf_hash_memory.c,
2769	librdf/rdf_hash_bdb.c, librdf/rdf_hash.c, librdf/rdf_digest.c,
2770	librdf/rdf_concepts.c:
2771	Replaced most LIBRDF_FATAL1/2 calls with LIBRDF_ERROR1/2; both now
2772	take world arguments.  The remaining fatal errors are either in
2773	redland startup when there is no sensible way to recover or in out of
2774	memory situations.  The LIBRDF_ERROR1/2 calls now give the error and
2775	recover/fail the method if appropriate.  The documentation on several
2776	methods were updated to note this.  The error notification isn't
2777	always possible since some methods have way to return errors.
2778	A new method on the world class is needed to test for this state.
2779
2780	* librdf/librdf.h:
2781	Added LIBRDF_ERROR1 and LIBRDF_ERROR2 that take world argument and call
2782	either librdf_error(world, ...) or #ifdef LIBRDF_DEBUG,  abort()
2783
2784	* librdf/rdf_parser_repat.c: Out of date, gone
2785
2786	* librdf/rdf_stream.c, librdf/rdf_storage_list.c,
2787	librdf/rdf_storage.c, librdf/rdf_serializer_rdfxml.c,
2788	librdf/rdf_parser_repat.c, librdf/rdf_parser_raptor.c,
2789	librdf/rdf_node.c, librdf/rdf_hash_memory.c,
2790	librdf/rdf_hash_bdb.c, librdf/rdf_digest.c: Replace most abort()
2791	with calls to LIBRDF_FATAL2 which aborts but gives a message too.
2792
2793	* librdf/rdf_init.c (librdf_world_get_feature,
2794	librdf_world_set_feature): Return failure
2795	rather than crash - not implemented or exposed in APIs yet.
2796
27972003-08-11  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
2798
2799	* librdf/rdf_model.c (main):
2800	Add test that librdf_model_add_statement fails on a partial statement.
2801
2802	* librdf/rdf_model.c (librdf_model_size):
2803	Added warning that it might not return an answer.
2804	(librdf_model_add_statement, librdf_model_add,
2805	librdf_model_remove_statement, librdf_model_contains_statement,
2806	librdf_model_context_add_statement,
2807	librdf_model_context_remove_statement): Added check that the
2808	statement used is complete, using new librdf_statement_is_complete
2809
2810	* librdf/rdf_statement.h: Added librdf_statement_is_complete
2811
2812	* librdf/rdf_statement.c (librdf_statement_is_complete):
2813	Added to check that a statement has
2814	all the subject, predicate, object fields.
2815
28162003-08-08  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
2817
2818	* raptor/tests/Makefile.am: Added warn-03
2819
2820	* raptor/tests/warn-03.rdf: Handle deleting of default namespaces
2821
2822	* raptor/raptor_parse.c (raptor_xml_start_element_handler):
2823	Handle when a name has a
2824	namespace but that namespace has no URI such as xmlns="".  In
2825	that case, the element has non-namespaced parts too, so skip.
2826
2827	* raptor/ntriples_parse.c (raptor_ntriples_parse_line):
2828	Casts so isspace calls get int args.
2829
2830	* raptor/raptor_uri.c (raptor_uri_is_absolute):
2831	Cast so isalpha and isalnum get int args.
2832
2833	* raptor/tests/Makefile.am: Addex ex-50
2834
2835	* raptor/tests/ex-50.out, raptor/tests/ex-50.rdf:
2836	Check parseType with unknown value
2837
2838	* raptor/raptor_parse.c (raptor_start_element_grammar):
2839	Handle parseType="Literal"
2840	without duplicating code.
2841
2842	* raptor/raptor_parse.c (raptor_start_element_grammar):
2843	Handle parseType="...." which
2844	isn't any of the other known types identically to
2845	parseType="Literal".
2846
2847	* raptor/raptor_general.c (raptor_check_ordinal):
2848	Return <0 on failure such as no legal
2849	characters at all.
2850
2851	* raptor/raptor_internal.h: Added raptor_check_ordinal.
2852
2853	* raptor/ntriples_parse.c (raptor_ntriples_generate_statement): Make
2854	RAPTOR_IDENTIFIER_TYPE_ORDINAL predicates for property URI strings
2855	that match the rdf:_<n> pattern with n a decimal integer>0.
2856
2857	* raptor/raptor_parse.c:
2858	Use raptor_check_ordinal for checking <n> in rdf:_<n>
2859
2860	* raptor/raptor_general.c (raptor_check_ordinal):
2861	Check the <n> in rdf:_<n>
2862
2863	* raptor/raptor_general.c (raptor_vsnprintf):
2864	Non-portable use of va_list fixed by copying the
2865	arguments with va_copy before passing to vsnprintf calls.  The
2866	symptom was crashes on some architectures where this mattered, such
2867	as powerpc.
2868
28692003-08-07  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
2870
2871	* librdf/rdf_parser_raptor.c: Track errors and warnings in parsing.
2872	(librdf_parser_raptor_error_handler(): Call raptor_parse_abort
2873
2874	* librdf/rdf_statement.c (librdf_statement_decode_parts):
2875	Updated for new librdf_node_decode API
2876
2877	* librdf/rdf_node.c (librdf_node_decode):
2878	Updated for new API - returns a new allocated node
2879	and sets the size pointer as a side effect.  This removes the only
2880	use of librdf_new_node outside the node class.
2881	(main): Updated the test code to match.
2882
2883	* librdf/rdf_node.h (librdf_node_decode): Updated for new API
2884
2885	* raptor/raptor_general.c (raptor_parse_uri_with_connection):
2886	Return failure status.
2887
2888	* librdf/rdf_node.c (librdf_new_node): No args means make a blank node.
2889	(librdf_new_node_from_blank_identifier): Docs
2890
2891	* python/RDF.py (Model.serialise):
2892	Add optional contexts arg, to serialise contexts
2893	as stream of statements.
2894	(NS): New class to cache handy nodes from a namespace URI
2895
28962003-08-03  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
2897
2898	* raptor/tests/Makefile.am:
2899	Added bad N-Triples tests bad-0[0-3].nt and checks
2900
2901	* raptor/tests/bad-00.nt, raptor/tests/bad-01.nt,
2902	raptor/tests/bad-02.nt, raptor/tests/bad-03.nt: Bad N-Triples
2903
2904	* raptor/ntriples_parse.c: raptor_ntriples_term_class Added for:
2905	(raptor_ntriples_term_valid): Checking validity of a ntriples term -
2906	this could be inlined.
2907	(raptor_ntriples_string) Renamed to:
2908	(raptor_ntriples_term) Use raptor_ntriples_term_valid.
2909	(raptor_ntriples_parse_line): Add more checks that whitespec exists
2910	between ntriples terms.
2911	Error to have typed literals with languages.
2912
2913	* perl/Makefile.PL: Remove -Dbool=int - this can only cause trouble
2914
2915	* perl/lib/RDF/Redland/Node.pm:
2916	Added methods is_resource, is_literal, is_blank using
2917	librdf_node_is_resource, librdf_node_is_literal, librdf_node_is_blank
2918
2919	* python/RDF.py: Removed NODE_TYPE_LI
2920	(Node) is_resource, is_literal, is_blank now use
2921	librdf_node_is_resource, librdf_node_is_literal, librdf_node_is_blank
2922
2923	* Redland.i, librdf/rdf_node.h, librdf/rdf_node.c:
2924	Added librdf_node_is_resource, librdf_node_is_literal,
2925	librdf_node_is_blank
2926
2927	* librdf/rdf_node.h, librdf/rdf_node.c:
2928	Delete LIBRDF_NODE_TYPE_LI - never used.  Reserve the allocated type 3.
2929
2930	* raptor/tests/test.out, raptor/tests/test.nt:
2931	Updated to remove language from typed literals
2932
2933	* raptor/raptor_general.c (raptor_print_statement_detailed):
2934	Fix datatype uri output <uri> not <uri<
2935
29362003-07-31  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
2937
2938	* raptor/raptor_general.c (raptor_parser_simple_error):
2939	Call raptor_parser_error_varargs, don't
2940	lose the arguments.
2941
29422003-07-30  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
2943
2944	* configure.ac: ECMA CLR=>ECMI CLI since it's not just the runtime.
2945	ECMA CLI= ECMA  Common  Language  Infrastructure.
2946
2947	* configure.ac:
2948	No need for CSHARP_COMPILE, dotGNU compiler accepts same args as mcs.
2949
29502003-07-29  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
2951
2952	* configure.ac: Also substitute CSHARP_COMPILE for csharp
2953
2954	* configure.ac:
2955	Added --with-ecma-clr for mono or dotgnu versions of toolchain.
2956	Sets CLRRUN and CSHARPCC for use in csharp dir
2957
2958	* Makefile.am: Added csharp dir
2959
2960	* raptor/configure.ac: Bumped version to 0.9.12
2961
2962	* raptor/raptor_sax2.c: struct nsd: use size_t for length.
2963
2964	* raptor/configure.ac:
2965	Ensure the libxml2 xmlReader API is new enough (2.5.0+) such as
2966	having xmlParserSeverities.
2967
29682003-07-28  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
2969
2970	* raptor/raptor.h:
2971	Update raptor_generate_id_handler to take user_bnodeid arg.
2972
2973	* raptor/raptor_rss.c: Update calls of raptor_generate_id with
2974	user_bnodeid (NULL for existing calls)
2975
2976	* raptor/raptor_parse.c:
2977	Update calls of raptor_generate_id with user_bnodeid (NULL for
2978	existing calls)
2979	Use it to wrap the rdf:nodeID values for subject and object cases.
2980
2981	* raptor/raptor_internal.h:
2982	raptor_generate_id updated to add user_bnodeid
2983
2984	* raptor/raptor_general.c (raptor_set_generate_id_handler):
2985	Document final argument
2986	user_bnodeid from the rdf:nodeID attribute value.
2987	(raptor_default_generate_id_handler): Add user_bnodeid, return it if
2988	present.
2989	(raptor_generate_id): Add user_bnodeid and pass on.
2990
2991	* raptor/raptor_internal.h: Added raptor_xml_writer_comment
2992
2993	* raptor/raptor_namespace.c (raptor_namespace_copy):
2994	Don't copy uri and then lose it.
2995
2996	* raptor/raptor_xml_writer.c:
2997	Added current_element for tracking empty/not empty elements.
2998	(raptor_xml_writer_comment): Added, just concatenating the content
2999	via raptor_xml_writer_cdata.
3000
3001	* raptor/raptor_parse.c (raptor_xml_comment_handler):
3002	Call raptor_xml_writer_comment inside
3003	parseType="Literal"
3004
3005	* raptor/raptor_xml_writer.c: raptor_xml_writer gains stack depth.
3006	(raptor_free_xml_writer): Clear any content_cdata before finishing.
3007	(raptor_xml_writer_start_element)
3008	Add depth to raptor_format_sax2_element calls.  Increase it
3009	(raptor_xml_writer_start_element,raptor_xml_writer_end_element):
3010	Add depth to raptor_format_sax2_element calls.  Decrease it
3011	and raptor_namespaces_end_for_depth each time.
3012
3013	* raptor/raptor_namespace.c:
3014	Moved  error_handler and error_data arguments around.
3015	(raptor_namespaces_start_namespace) Gets those as arguments
3016	(raptor_namespaces_start_namespace) Added, simpler version of _full
3017	(raptor_namespaces_start_namespace_full) Added, was the old interface
3018	but less error arguments.
3019	(raptor_namespaces_namespace_in_scope): Fix namespace URI comparison.
3020	(raptor_namespace_new) Looses error arguments.
3021	(raptor_namespace_copy) Added, copy to a new stack with a new depth.
3022
3023	* raptor/raptor_sax2.c (raptor_format_sax2_element):
3024	Gain stack depth argument.
3025	Only use namespace declarations when there is a namespace stack
3026	present.
3027	copy namespaces to new stack when new ones are needed.
3028
3029	* raptor/raptor_internal.h:
3030	Add error_handler and error_data to namespace_stack.
3031	raptor_namespaces_start_namespace gets those as arguments
3032	raptor_namespace_new looses them
3033	raptor_namespaces_start_namespace takes less args
3034	raptor_namespaces_start_namespace_full added
3035	raptor_namespace_copy added
3036	content_cdata_seen and content_element_seen back into sax2_element
3037
3038	* raptor/raptor_parse.c:
3039	Moved content_cdata_seen and content_element_seen back into
3040	sax2_element.
3041	Update for new raptor_namespaces_start_namespace calling convention.
3042
3043	* raptor/raptor_xml_writer.c: Debug
3044
3045	* raptor/raptor_namespace.c (raptor_namespaces_format):
3046	Fix missing counting : when present
3047
3048	* raptor/tests/ex-11.rdf, raptor/tests/ex-11.out:
3049	Updated to declare the html namespace as default, expect it in the
3050	N-Triples output.
3051
3052	* raptor/raptor_namespace.c (raptor_namespaces_namespace_in_scope):
3053	Added, checking if a given
3054	namespace is declared in scope.
3055	(raptor_namespaces_format): Added, returning a string to declare
3056	the given namespace.
3057
3058	* raptor/raptor_xml_writer.c:
3059	(raptor_xml_writer_start_element,raptor_xml_writer_end_element):
3060	Updated for raptor_format_sax2_element new arguments
3061
3062	* raptor/raptor_sax2.c (raptor_format_sax2_element):
3063	Add raptor_namespace_stack argument.
3064	Create xmlns declarations for elements not declared in the current
3065	stack state, using raptor_namespaces_format to create the string.
3066
3067	* raptor/raptor_internal.h:
3068	Added prototypes for raptor_namespaces_namespace_in_scope,
3069	raptor_namespaces_format
3070	raptor_format_sax2_element now takes a raptor_namespace_stack
3071
30722003-07-27  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3073
3074	* raptor/raptor_internal.h:
3075	raptor_xml_writer prototypes take unsigned char*
3076
3077	* raptor/raptor_parse.c:
3078	Move the code building parseType="Literal" strings to
3079	raptor_xml_writer class.
3080	(raptor_cdata_grammar): Added, just for symmetry mostly, with most
3081	code taken from raptor_xml_cdata_handler.
3082
3083	* raptor/raptor_xml_writer.c:
3084	Move the code building parseType="Literal" strings to
3085	raptor_xml_writer class.
3086
3087	* raptor/Makefile.am: Added raptor_xml_writer.c
3088
3089	* raptor/raptor_xml_writer.c: Initial version
3090
3091	* raptor/raptor_parse.c:
3092	Split content_cdata fields between sax2_element & (RDF/XML
3093	specific) element.
3094	raptor_element: Add xml_writer field.
3095	Various calls changed to use the new raptor_simple_message_handler
3096	for error handling implemented as raptor_parser_simple_error here.
3097	(raptor_xml_parser_simple_error_handler): Added, matching the
3098	raptor_simple_message_handler API and calling raptor_parser_error.
3099	(raptor_start_element_grammar): When parseType="Literal" appears,
3100	create a new raptor_xml_writer.
3101	(raptor_end_element_grammar): When parseType="Literal" ends, delete
3102	the raptor_xml_writer.
3103
3104	* raptor/raptor_sax2.c (raptor_format_sax2_element):
3105	Use raptor_simple_message_handler.
3106
3107	* raptor/raptor_general.c (raptor_start_parse):
3108	Use raptor_parser_simple_error with raptor_namespaces_init.
3109	(raptor_parser_simple_error): Added, matching the
3110	raptor_simple_message_handler API but same as raptor_parser_error.
3111
3112	* raptor/raptor_xml.c (raptor_xml_escape_string):
3113	Use raptor_simple_message_handler.
3114
3115	* raptor/raptor_qname.c (raptor_new_qname):
3116	Use raptor_simple_message_handler.
3117
3118	* raptor/raptor.h: raptor_sax2_element moved here, semi-public.
3119	Re-ordered URI functions earlier.
3120	Various methods changed to use (public) raptor_simple_message_handler
3121	for error handling.
3122
3123	* raptor/raptor_internal.h: Delete raptor_internal_message_handler.
3124	Added prototype raptor_parser_simple_error, implementing
3125	raptor_simple_error_handler API.
3126	Various methods changed to use (public) raptor_simple_message_handler
3127	for error handling.
3128	raptor_sax2_element moved to semi-public raptor.h
3129	rdf/xml-specific cdata parts moved from raptor_sax2_element to
3130	raptor_element.
3131	Added raptor_xml_writer functions.
3132
3133	* raptor/raptor_namespace.c:
3134	Use (public) raptor_simple_message_handler for error handling.
3135
31362003-07-24  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3137
3138	* raptor/raptor_parse.c (raptor_process_property_attributes):
3139	NFC error message tidy.
3140	(raptor_end_element_grammar): Fix NFC error reporting and recovery.
3141	Report NFC validation failures for XML Literals
3142
3143	* raptor/tests/Makefile.am: Added bad-15 bad-17 for bad NFC checking
3144
3145	* raptor/tests/bad-16.rdf, raptor/tests/bad-17.rdf,
3146	raptor/tests/bad-15.rdf: Bad NFC tests for property attribute,
3147	element, element ptl
3148
3149	* raptor/configure.ac:
3150	Added check for g_utf8_normalize in glib 2.0 using pkgconfig.
3151	Defines HAVE_G_UTF8_NORMALIZE if present.
3152
3153	* raptor/raptor_internal.h: Added raptor_utf8_is_nfc
3154
3155	* raptor/raptor_parse.c (raptor_process_property_attributes):
3156	Check for valid NFC on property
3157	attribute values.
3158	(raptor_end_element_grammar): Check for valid NFC on plain literal
3159	property element values.
3160
3161	* raptor/raptor_utf8.c (raptor_utf8_is_nfc):
3162	Added Normal Form C checking, using GNOME glib
3163	2.0 g_utf8_normalize initially.
3164
3165	* raptor/raptor_parse.c (raptor_start_element_grammar):
3166	Forbid property attributes and all
3167	rdf:* attributes (except rdf:ID) with rdf:parseType
3168
3169	* raptor/raptor_general.c:
3170	(raptor_statement_part_as_counted_string,
3171	raptor_print_statement_part_as_ntriples): Do not emit language for
3172	datatyped literals.
3173
3174	* raptor/raptor_parse.c (raptor_process_property_attributes):
3175	rdf:li is forbidden as a property attribute
3176
3177	* raptor/raptor_parse.c: rdf_syntax_terms_info table: rdf:li is
3178	forbidden as a property attribute
3179
3180	* raptor/libraptor.3: Updated raptor_set_feature for
3181	RAPTOR_FEATURE_ALLOW_BAGID and
3182	RAPTOR_FEATURE_ALLOW_RDF_TYPE_RDF_LIST
3183
3184	* raptor/tests/owl-schema.out, raptor/tests/ex-39.out:
3185	Updated to remove the <idList> rdf:type rdf:List triples
3186
3187	* raptor/raptor_general.c (raptor_set_feature,
3188	raptor_set_parser_strict): Added a new feature
3189	RAPTOR_FEATURE_ALLOW_RDF_TYPE_RDF_LIST (user argument) and
3190	feature_allow_rdf_type_rdf_List (internal) to generate the rdf:type
3191	rdf:List triple from rdf:parseType="Collection".  The default is no
3192	after latest RDF/XML revisions.  Not relevant for daml:Collection
3193	which get the daml:List always.
3194
3195	* raptor/raptor.h:
3196	Added a new feature feature RAPTOR_FEATURE_ALLOW_RDF_TYPE_RDF_LIST
3197	to control rdf:type rdf:List triple generation from
3198	rdf:parseType="Collection" (default no)
3199
3200	* raptor/raptor_internal.h:
3201	Added a new feature feature_allow_rdf_type_rdf_List
3202	to control rdf:type rdf:List triple generation from
3203	rdf:parseType="Collection" (default no)
3204
3205	* raptor/raptor_parse.c (raptor_start_element_grammar):
3206	Remove rdf:type rdf:List triple
3207	generation from rdf:parseType="Collection" by default.  Not
3208	for daml:Collection.  Add a new feature
3209	feature_allow_rdf_type_rdf_List to control this.
3210
32112003-07-22  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3212
3213	* raptor/raptor_xml.c (raptor_valid_xml_ID, raptor_xml_escape_string):
3214	unsigned long for
3215	all unichars.
3216
3217	* raptor/raptor_internal.h:
3218	Update raptor_utf8_to_unicode_char to use unsigned long output.
3219
3220	* raptor/raptor_utf8.c (raptor_utf8_to_unicode_char):
3221	Take and use unsigned long for unichars.
3222
3223	* raptor/raptor_rss.c:
3224	namespace->nspace since might be a C/C++ keyword sometime
3225
3226	* raptor/raptor_www_curl.c (raptor_www_curl_header_callback):
3227	Turn void* into char*
3228
3229	* raptor/raptor_set.c: Casts
3230
3231	* raptor/rdfdump.c (rdfdump_error_handler):
3232	Cast data into raptor_parser*
3233
3234	* raptor/raptor_www_curl.c:
3235	(raptor_www_curl_write_callback,raptor_www_curl_header_callback):
3236	Return unsigned int 0 on failure, cannot return -1 :)
3237
3238	* raptor/raptor_www.c: Some casts near mallocs
3239
3240	* raptor/tests/owl-schema.out: Updated to match 2003-03-18 version.
3241
3242	* raptor/tests/owl-schema.rdf:
3243	Updated to 2003-03-18 version (just changed DOS line endings)
3244
3245	* raptor/ntriples_parse.c (raptor_ntriples_parse_chunk):
3246	Handle just the end marker being given
3247	i.e. len=0 (and possibly s=NULL)
3248
3249	* raptor/raptor_parse.c (raptor_xml_end_element_handler):
3250	When parsing has been aborted
3251	(rdf_parser->failed), clean up used memory rather than just return.
3252	element_name is not used except when debugging, so #ifdef it.
3253
32542003-07-21  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3255
3256	* raptor/raptor.h:
3257	Export global statics raptor_copyright_string, raptor_version_string,
3258	raptor_version_major, raptor_version_minor, raptor_version_release
3259	and raptor_version_decimal
3260
3261	* raptor/raptor_general.c:
3262	Added statics raptor_copyright_string, raptor_version_string,
3263	raptor_version_major, raptor_version_minor, raptor_version_release
3264	and raptor_version_decimal
3265
3266	* raptor/Makefile.am:
3267	Removed raptor_cc code since ISO may charge a commercial use fee for
3268	this list.
3269
3270	* raptor/raptor_cc.gperf: ISO 3166-1 'The use of ISO 3166-1 in
3271	commercial products may be subject to a licence fee.' says the
3272	maintenance agency.  Goodbye code.
3273
3274	* raptor/raptor_parse.c:
3275	Free former rdf:about, rdf:resource attribute string values before
3276	they are zapped.
3277
3278	* raptor/raptor_parse.c (raptor_xml_parse_terminate):
3279	Delete the sax2 object when cleaning
3280	up.
3281
3282	* raptor/rdfdump.c:
3283	Free new uri_string when it's allocated for a filename
3284
3285	* raptor/rdfdump.c: Tidied usage and help information.
3286
3287	* raptor/rapper.1: Updated to match current rapper arguments.
3288
3289	* raptor/Makefile.am: Added raptor_identifier.c
3290
3291	* raptor/raptor_general.c, raptor/raptor_identifier.c:
3292	Moved raptor_identifer classes to raptor_identifier.c
3293
32942003-07-20  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3295
3296	* raptor/rdfdump.c:
3297	If first argument is a filename, make it into a file:/// uri.
3298
3299	* raptor/raptor_uri.c (raptor_default_new_uri):
3300	Turn probably-bad file:filename 'URIs' into
3301	proper file:///... etc. ones.
3302
3303	* raptor/raptor_parse.c:
3304	Make use of forbidden rdf-namespaced property attributes into errors,
3305	as they should be.
3306	(raptor_forbidden_propertyAttribute_name): Now used.
3307	Reword some error messages.
3308
3309	* raptor/tests/Makefile.am (check-bad-rdf):
3310	Note when bad test succeeds instead of failing
3311
3312	* raptor/tests/Makefile.am: Added bad-13, bad-14
3313
3314	* raptor/tests/bad-14.rdf:
3315	rdf:Description is not a legal property attribute
3316
3317	* raptor/tests/bad-13.rdf: A property element cannot take rdf:about
3318
3319	* raptor/raptor_uri.c (raptor_new_uri_for_xmlbase): Docs
3320
33212003-07-15  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3322
3323	* raptor/libraptor.3: formatting
3324
3325	* raptor/libraptor.3: Added
3326	raptor_set_default_generate_id_parameters,
3327	raptor_set_generate_id_handler
3328
3329	* raptor/raptor_general.c (raptor_set_default_generate_id_parameters):
3330	Fix it right this time.
3331
3332	* raptor/raptor_general.c (raptor_set_default_generate_id_parameters):
3333	Fix base so the next
3334	generated ID uses the integer given, not integer+1
3335
3336	* raptor/raptor_general.c (raptor_free_parser):
3337	Free any user-set genid prefix.
3338
33392003-07-13  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3340
3341	* raptor/raptor.h:
3342	raptor_genid_type enum added - for RAPTOR_GENID_TYPE_BNODEID, BAGID
3343	Added prototypes for raptor_set_generate_id_handler,
3344	raptor_set_default_generate_id_parameters.
3345
3346	* raptor/raptor_general.c (raptor_set_generate_id_handler):
3347	Added, to sent the generate ID
3348	handler implementation.
3349	(raptor_set_default_generate_id_parameters): Added, to sent the
3350	generate ID handler parameters for the default implementation
3351	("gen"+integer).
3352	(raptor_default_generate_id_handler): Added, moved default code from
3353	raptor_generate_id
3354	(raptor_generate_id): Use handler if it exists, otherwise the default
3355	implementation.
3356
3357	* raptor/raptor_internal.h:
3358	Added generate_id_handler data parts to raptor_parser internals.
3359
33602003-06-24  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3361
3362	* redland-config.in: Make --libs pick the right libdir - add
3363	exec_prefix variable declaration.
3364
3365	* utils/Makefile.am, librdf/Makefile.am, examples/Makefile.am:
3366	Use @LIBS@ in LIBS to pick up any system-wide use.
3367
3368	* configure.ac:
3369	Pick up any external CPPFLAGS, LDFLAGS, LIBS to start with.
3370
3371	* raptor/tests/Makefile.am: use top_builddir not ..
3372
3373	* raptor/Makefile.am: add libraptor.la to rapper dependencies
3374
33752003-06-23  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3376
3377	* python/RDF.py: Statements, Model: more docs, usage.
3378
3379	* python/Makefile.am: Added redlandtest.py
3380
3381	* python/redlandtest.py: Redland Python unit tests
3382
3383	* python/RDF.py: v0.8
3384	Updates from Matt Biddulph.
3385	(class Model) Now takes optional storage, if omitted, a memory
3386	storage model is created
3387	(class StreamWithContextIter, class IteratorWithContextIter,
3388	class IteratorIter, class StreamIter): Internal classes to create
3389	python iterators out of redland stream/iterators.
3390	(class Stream): New method context_iter that returns a python iterator
3391	returning (stream, context node) tuple on each iteration.
3392	(class HashStorage): Simple class to simplify creating hashed storage.
3393	(class MemoryStorage): Simple class to simplify creating in-memory
3394	storage.
3395	(class Parser): Name is now optional, defaults to raptor and RDF/XML.
3396	(class Parser): Methods parse_as_stream, parse_into_model will
3397	autoconvert uri arguments that are strings into redland URIs.
3398
3399	* python/test/test.py: s/if not thing/if thing is None/
3400
3401	* raptor/rdfdump.c:
3402	Added -e/--ignore-errors otherwise rapper stops parsing after 1st
3403	error using raptor_parse_abort.
3404
34052003-06-14  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3406
3407	* raptor/raptor_rss.c (raptor_rss_insert_identifiers):
3408	Back to being legal C99.
3409
3410	* raptor/libraptor.3: Fix changes for 0.9.11
3411
3412	* raptor/libraptor.3: Updated for stuff since 0.9.10
3413
3414	* raptor/raptor_rss.c (raptor_rss_insert_identifiers):
3415	Init identifier after item
3416
3417	* raptor/rdfdump.c, raptor/configure.ac:
3418	Tweak RSS Tag Soup parser words
3419
34202003-06-10  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3421
3422	* raptor/raptor_parse.c (raptor_xml_start_element_handler):
3423	Emit an error for namespace
3424	declarations that are RDF namespace URI plus some chars.  Emit
3425	a warning if a namespace is declared same as RDF one but 1 char
3426	short.
3427
3428	* raptor/tests/Makefile.am: Added bad-12, warn-02
3429
3430	* raptor/tests/bad-12.rdf, raptor/tests/warn-02.out,
3431	raptor/tests/warn-02.rdf: Check for bad rdf namespace URI
3432	declarations and warn if last char of RDF namespace URI omitted
3433
34342003-06-09  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3435
3436	* librdf/rdf_uri.c (librdf_new_uri_from_filename): Removed unused vars.
3437
34382003-06-08  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3439
3440	* raptor/configure.ac:
3441	Fix the check for RSS parser requirements and report it more
3442	verbosely.
3443
3444	* raptor/configure.ac:
3445	RSS parser only if libxml/reader.h present (for now).
3446
3447	* raptor/configure.ac: libcurl reporting
3448
3449	* raptor/raptor_parse.c (raptor_xml_parse_chunk_): Use sax2->first_read
3450
3451	* raptor/raptor_parse.c (raptor_xml_parse_start,raptor_xml_parse_chunk_):
3452	Don't use first_read on newer libxml2.
3453
34542003-06-06  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3455
3456	* raptor/raptor_internal.h:
3457	raptor_sax2_s: Add first_read #if LIBXML_VERSION < 20425
3458
3459	* raptor/raptor_rss.c (raptor_rss_insert_identifiers):
3460	Fix GCC-ism, declare variable at
3461	start of block.
3462
3463	* raptor/raptor_parse.c (raptor_xml_parse_init):
3464	Move declaration of expat xp to start of
3465	function.
3466
3467	* raptor/examples/raptor_abort.c, raptor/examples/grapper.c,
3468	raptor/strcasecmp.c, raptor/rdfdump.c, raptor/raptor_xml.c,
3469	raptor/raptor_www_test.c, raptor/raptor_www_libxml.c,
3470	raptor/raptor_www_libwww.c, raptor/raptor_www_curl.c,
3471	raptor/raptor_www.c, raptor/raptor_win32.c, raptor/raptor_utf8.c,
3472	raptor/raptor_uri.c, raptor/raptor_set.c, raptor/raptor_sax2.c,
3473	raptor/raptor_rss.c, raptor/raptor_qname.c, raptor/raptor_parse.c,
3474	raptor/raptor_namespace.c, raptor/raptor_locator.c,
3475	raptor/raptor_libxml.c, raptor/raptor_general.c,
3476	raptor/ntriples_parse.c, raptor/configure.ac: Merged patch from
3477	Jose Kahan to switch to use raptor_config.h (helps people
3478	compiling from source with multiple config.h)
3479
34802003-06-05  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3481
3482	* raptor/examples/grapper.c (fs_ok_button_callback):
3483	Use raptor_uri_filename_to_uri_string
3484	to make the file URI.
3485	(main): If the argument is a filename, make a URI string out of it
3486	via raptor_uri_filename_to_uri_string and use it instead of
3487	assuming it is a URI.
3488
34892003-06-04  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3490
3491	* Redland.i, librdf/rdf_uri.h: Added librdf_new_uri_from_filename
3492
3493	* librdf/rdf_uri.c (librdf_new_uri_from_filename):
3494	Added using raptor_uri_filename_to_uri_string
3495
3496	* autogen.sh: Report min SWIG version
3497
34982003-05-26  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3499
3500	* demos/rss-show.pl: words
3501
35022003-05-12  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3503
3504	* raptor/raptor_xml.c (raptor_xml_escape_string):
3505	Changed API - does not require a parser arg.
3506
3507	* raptor/raptor_internal.h: Moved SAX2 parts and prototypes here.
3508
3509	* raptor/raptor_general.c:
3510	Use RAPTOR_PARSER_RSS to wrap init of RSS parser
3511
3512	* raptor/raptor.h:
3513	Changed prototype of raptor_xml_escape_string - does not require a
3514	parser arg.
3515
3516	* raptor/raptor_parse.c:
3517	Split raptor_element/raptor_rdf_xml_parser into SAX2/RDF bits.
3518	Lots of function and structure renaming.
3519
3520	* raptor/configure.ac:
3521	Define RAPTOR_PARSER_RSS only when libxml is around
3522
3523	* raptor/raptor_sax2.c: SAX2 API
3524
3525	* raptor/Makefile.am: Added raptor_sax2.c
3526
35272003-04-30  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3528
3529	* perl/lib/RDF/Redland/Model.pm:
3530	Same as before but with right package names
3531	(find_statements): Return copies of shared statements
3532	(sources,arcs,targets): Return copies of shared nodes
3533
3534	* perl/lib/RDF/Redland/Model.pm (find_statements):
3535	Return copies of shared statemetns
3536	(sources,arcs,targets): Return copies of shared nodes
3537
35382003-04-29  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3539
3540	* librdf/rdf_statement.c (librdf_statement_to_string):
3541	Handle buffer size counting when parts are null
3542
3543	* librdf/rdf_heuristics.c (librdf_heuristic_gen_name):
3544	Check loop doesn't go before start.
3545
3546	* librdf/rdf_utf8.c (librdf_utf8_print):
3547	check length first before looking in what might
3548	be a byte beyond the length
3549
35502003-04-28  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3551
3552	* raptor/raptor_rss.c (raptor_rss_emit): Use raptor_free_identifier
3553
3554	* raptor/raptor_rss.c (raptor_rss_emit):
3555	Properly init the raptor_identifier items
3556
35572003-04-27  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3558
3559	* raptor/raptor_rss.c, raptor/raptor_parse.c, raptor/ntriples_parse.c:
3560	Use raptor_parser_register_factory with label param.
3561
3562	* raptor/raptor.h: Added raptor_get_name, raptor_get_label
3563
3564	* raptor/raptor_general.c: Added parser label to factory
3565	(raptor_parser_register_factory): Add label param, copy it.
3566	(raptor_get_name): Added, return name of parser.
3567	(raptor_get_label): Added, return label of parser.
3568
3569	* raptor/raptor_internal.h: Added parser label to factory
3570
3571	* raptor/examples/grapper.c: Remove some g_printfs
3572	Remove use of display qnames - not impl.
3573
3574	* raptor/raptor_general.c (raptor_statement_part_as_counted_string):
3575	Init len for literals with
3576	the literal len included
3577
3578	* raptor/examples/grapper.c: Don't use triples_list for now.
3579	(grapper_model_set_syntax): Fix output.
3580	(grapper_model_statements_handler): Remove newlines from literals.
3581
3582	* raptor/raptor_general.c (raptor_statement_part_as_counted_string):
3583	Init len for literals.
3584
35852003-04-25  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3586
3587	* raptor/raptor_set.c: fix doccumment
3588
35892003-04-23  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3590
3591	* raptor/examples/grapper.c:
3592	Replace N-Triples / RDF/XML with dropdown menu and add RSS tag soup.
3593
35942003-04-22  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3595
3596	* librdf/redland.spec.in: Updated for Redhat 9 and RPM 4
3597
3598	* python/RDF.py: Added blank node is_blank() method example
3599	(Node.__set_attr): Fix set_type
3600	(Node.get_blank_identiifer, Node.set_blank_identiifer): Added
3601
3602	* python/RDF.py: some perlisms in the docs/comments
3603
3604	* python/RDF.py:
3605	this one file is now also under BSD without advertising/MIT license
3606
36072003-04-19  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3608
3609	* raptor/rdfdump.c: Added -i/--input for rdfxml, ntriples, rss
3610
3611	* raptor/raptor_internal.h: More RAPTOR_DEBUG macros
3612
3613	* raptor/raptor_general.c:
3614	(raptor_init) Added rss parser via raptor_init_parser_rss when
3615	HAVE_LIBXML_XMLREADER_H
3616
3617	* raptor/Makefile.am: Added raptor_rss.c
3618
3619	* raptor/raptor_rss.c: Raptor RSS parser
3620
36212003-04-17  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3622
3623	* raptor/configure.ac: Bumped version to 0.9.11
3624
3625	* raptor/libraptor.3: Added raptor_set_parser_strict
3626	Added raptor_www_no_www_library_init_finish
3627
3628	* raptor/raptor.spec.in: Require curl
3629	Added raptor-config, raptor.pc
3630
3631	* raptor/tests/Makefile.am:
3632	Move rdf:bagID tests to list of tests with warnings for now (while
3633	testing in lax mode)
3634
36352003-04-15  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3636
3637	* docs/fix-pod-xhtml: and a newline
3638
3639	* docs/fix-pod-xhtml: added xml decl
3640
3641	* docs/fix-pod-xhtml: More fixing
3642
3643	* docs/fix-pod-xhtml: New style POD to html cleanup
3644
3645	* librdf/rdf_storage_hashes.c (librdf_storage_hashes_register):
3646	Allow NULL name
3647
3648	* perl/lib/RDF/Redland/Storage.pm: add rest of storage options to docs
3649
3650	* raptor/rdfdump.c (print_statements):
3651	Print the program name not "rdfdump" hardcoded.
3652
3653	* librdf/rdf_node.h, librdf/rdf_node.c:
3654	Added librdf_node_get_literal_value_as_counted_string
3655
36562003-04-14  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3657
3658	* raptor/configure.ac: Check for libxml/xmlreader.h
3659
36602003-04-13  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3661
3662	* raptor/examples/grapper.c: Added about box, triples count.
3663	Free some allocated memory.  Rest seems lost in gtk.
3664
3665	* raptor/examples/Makefile.am: Add AM_CFLAGS, LIBS for debugging
3666
3667	* raptor/raptor_parse.c (raptor_xml_start_element_handler):
3668	Don't copy an empty attributes array.
3669
3670	* raptor/configure.ac: Added raptor.pc
3671
3672	* raptor/Makefile.am:
3673	Added raptor.pc pkgconfig file installing to $(libdir)/pkgconfig
3674
3675	* raptor/raptor.pc.in: pkgconfig for raptor
3676
36772003-04-12  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3678
3679	* librdf/Makefile.am: Added rdf_model_storage.h
3680
3681	* librdf/rdf_model_storage.h: RDF Model Storage Interface definition
3682
36832003-04-10  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3684
3685	* librdf/rdf_model.c:
3686	Split model/storage into model/model factory/model storage factory
3687	just like hashes, storage classes.
3688	(librdf_init_model): Call librdf_init_model_storage
3689	(librdf_finish_model): Call librdf_delete_model_factories
3690	(librdf_delete_model_factories, librdf_model_register_factory,
3691	librdf_get_model_factory):  Added, after rdf_storage.c similar names.
3692	(librdf_new_model_with_options): Use storage factory create method.
3693	(librdf_new_model_from_model): Use clone method.
3694	(librdf_free_model): Use destroy method.
3695	The remaining methods that depend on storage now use factory methods.
3696	Some methods have slight edits to use the model method not the
3697	storage one when it doesn't matter, or when no factory method is
3698	present, and it is emulated at the model level.
3699
3700	* librdf/Makefile.am: Added rdf_model_storage.c
3701
3702	* librdf/rdf_model.h:
3703	Added internal librdf_model_factory struct with factory methods
3704	Added librdf_model_register_factory, librdf_get_model_factory
3705
3706	* librdf/librdf.h: added librdf_model_factory
3707
3708	* librdf/rdf_model_storage.c: RDF model over a storage
3709
37102003-04-05  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3711
3712	* raptor/raptor.h: void arg
3713
3714	* raptor/examples/raptor_abort.c: Zap curl cleanup.
3715
3716	* raptor/rdfdump.c:
3717	Added -c flag to getopts - oops, missed in last release.
3718	Added -m/--mode flag to set strict/lax.  Check the values and die
3719	with usage.
3720	Check the legal values of -o/--output and die with usage.
3721	Zap curl cleanup.
3722
3723	* raptor/raptor_www.c (raptor_www_no_www_library_init_finish):
3724	To control global WWW
3725	library init/finish
3726
3727	* raptor/raptor_parse.c:
3728	Make bagID optional - removed from language and gives errors
3729	(strict), allowed with warnings (lax).
3730	lax/strict controlled by feature_allow_bagID
3731
3732	* raptor/raptor_internal.h: Added feature_allow_bagID
3733
3734	* raptor/raptor_general.c: Several more docucomments for functions.
3735	(raptor_new_parser): Use raptor_set_parser_strict
3736	(raptor_set_feature): Added RAPTOR_FEATURE_ALLOW_BAGID
3737	(raptor_set_parser_strict): Added to set strict/lax mode flags.
3738
3739	* raptor/raptor.h: Added RAPTOR_FEATURE_ALLOW_BAGID
3740	Added raptor_set_parser_strict
3741	Added raptor_www_no_www_library_init_finish
3742
37432003-04-03  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3744
3745	* raptor/tests/Makefile.am: Added warn-01
3746
3747	* raptor/tests/warn-01.out, raptor/tests/warn-01.rdf:
3748	Check warning on non-prefixed property elements
3749
3750	* raptor/raptor_parse.c, raptor/tests/Makefile.am
3751	(raptor_xml_start_element_handler): Error recovery - try to hide that
3752	a bad element was found from a parent element, it thinks the element
3753	is empty.  See tests/warn-00.rdf
3754
3755	* raptor/tests/warn-00.out, raptor/tests/warn-00.rdf: Check warnings
3756
37572003-04-02  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3758
3759	* Makefile.am, raptor/configure.ac, raptor/Makefile.am, configure.ac:
3760	debian dir elsewhere
3761
37622003-04-01  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3763
3764	* librdf/rdf_parser_raptor.c
3765	(librdf_parser_raptor_new_statement_handler): (re)add storing in a
3766	model direct.
3767	(librdf_parser_raptor_parse_uri_as_stream_write_bytes_handler): Added
3768	to support librdf_parser_raptor_parse_uri_as_stream via raptor_www
3769	(librdf_parser_raptor_parse_uri_as_stream): Added.  Calls
3770	librdf_parser_raptor_parse_file_as_stream if that's possible.
3771	(librdf_parser_raptor_parse_uri_into_model): Added, doing all of
3772	librdf_parser_raptor_parse_file_into_model.
3773	(librdf_parser_raptor_constructor): Register new functionality.
3774
3775	* raptor/raptor_uri.c (raptor_uri_uri_string_to_filename):
3776	Use raptor_strcasecmp
3777	(raptor_uri_is_file_uri): Use raptor_strncasecmp
3778
3779	* librdf/rdf_parser_libwww.c: No libwww parser
3780
37812003-03-31  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3782
3783	* raptor/fix-groff-xhtml: more cols
3784
3785	* raptor/fix-groff-xhtml: More fixes
3786
3787	* raptor/Makefile.am: Added libraptor.html, fix-groff-xhtml
3788
3789	* raptor/fix-groff-xhtml: Fix groff output HTML
3790
3791	* raptor/libraptor.3: deleted repeated URI METHODS
3792
3793	* raptor/libraptor.3: Updated for 0.9.6->present
3794
37952003-03-30  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3796
3797	* raptor/examples/grapper.c: Use N-triples output style.
3798	Pass in URL command line argument
3799
3800	* raptor/Makefile.am: Added raptor_xml.c
3801
3802	* raptor/raptor_parse.c (raptor_xml_start_element_handler):
3803	do XML attribute value
3804	normalization for libxml2.  Cannot be done properly since the type of
3805	the attribute is lost.  expat gets it right.
3806	(raptor_xml_parse_init): Cast for expat XML_SetExternalEntityRefHandler
3807
3808	* raptor/raptor_xml.c:
3809	Updated for C14N text/attribute node encoding rules.  Don't de-UTF8
3810	at the same time.
3811
3812	* raptor/tests/ex-49.out: > in attribute appears raw
3813
3814	* raptor/raptor_general.c:
3815	(main) Moved raptor_validate_xml_ID, raptor_xml_escape_string test
3816	code to raptor_xml.c
3817
3818	* raptor/raptor_xml.c: Raptor XML routines
3819
3820	* raptor/raptor_general.c:
3821	Moved raptor_validate_xml_ID, raptor_xml_escape_string to raptor_xml.c
3822
3823	* raptor/tests/Makefile.am: Added ex-49
3824
3825	* raptor/tests/ex-49.out, raptor/tests/ex-49.rdf:
3826	Checking escaping in parseType Literal values with XML attributes
3827
3828	* raptor/raptor_parse.c (raptor_format_element):
3829	Pass in parser for UTF-8 error handling.
3830	Use raptor_xml_escape_string for attribute values but
3831	only malloc/free if lengths changed.
3832	(raptor_xml_end_element_handler): Update to new
3833	raptor_xml_escape_string API and only malloc/free it if lengths
3834	changed.
3835
3836	* raptor/raptor_parse.c (raptor_xml_cdata_handler):
3837	Use updated raptor_xml_escape_string API
3838
3839	* raptor/raptor.h: Added raptor_statement_part_as_counted_string,
3840	raptor_statement_part_as_string
3841	Changed raptor_xml_escape_string API
3842
3843	* raptor/raptor_general.c
3844	(raptor_statement_part_as_counted_string,
3845	raptor_statement_part_as_string): Added, making N-triples style
3846	output from parts of raptor_statement.
3847	(raptor_xml_escape_string): Change API to take an existing
3848	buffer/calculate length
3849	(main): Update for raptor_xml_escape_string.
3850
3851	* raptor/examples/Makefile.am: Also clean grapper binary
3852
38532003-03-29  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3854
3855	* raptor/examples/grapper.c: Added N-Triples parsing
3856
3857	* raptor/examples/Makefile.am: Don't build grapper usually
3858
3859	* raptor/examples/grapper.c: Raptor GTK GUI example code
3860
3861	* python/RDF.py, librdf/rdf_parser_raptor.c, librdf/rdf_parser.h,
3862	librdf/rdf_parser.c, librdf/Makefile.am, docs/redland.pod,
3863	docs/api.sgml.in, docs/Makefile.am, demos/parser-tests.pl,
3864	demos/demo.pl, configure.ac: Removed repat
3865
3866	* librdf/rdf_uri.c (librdf_free_uri): Move world defn inside ifdef
3867
3868	* raptor/examples/Makefile.am: Added grapper.c
3869
3870	* raptor/examples/Makefile.am: more deps
3871
3872	* raptor/raptor_internal.h:
3873	Added raptor_print_statement_part_as_ntriples prototype
3874
3875	* raptor/raptor_general.c:
3876	raptor_print_ntriples_string moved to raptor_general.c
3877	(raptor_print_statement_part_as_ntriples): Added, internal.
3878	(raptor_print_statement_as_ntriples): Now uses above.
3879
3880	* Makefile.am: Removed repat
3881
3882	* raptor/ntriples_parse.c:
3883	raptor_print_ntriples_string moved to raptor_general.c
3884
3885	* librdf/Makefile.am: die recursive make
3886
38872003-03-28  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3888
3889	* raptor/examples/Makefile.am: another deps attempt
3890
3891	* raptor/examples/Makefile.am: typo
3892
3893	* raptor/examples/Makefile.am: Use LDADD and hunt for @REDLAND_LIBS@
3894	Added $(top_builddir)/../librdf/librdf.la
3895
3896	* raptor/configure.ac: Hunt for librdf.la in abs dir
3897
3898	* raptor/rapper.1: added -c/--count
3899
3900	* raptor/examples/Makefile.am: Fixes to make cross-dir building work.
3901
3902	* raptor/configure.ac, raptor/Makefile.am: Added examples dir
3903
3904	* raptor/raptor_general.c (raptor_parse_uri_with_connection): Added.
3905	(raptor_parse_abort): Added.
3906
3907	* raptor/raptor.h: Added raptor_parse_uri_with_connection.
3908	Added raptor_parse_abort.
3909
3910	* raptor/examples/raptor_abort.c, raptor/examples/Makefile.am: examples
3911
3912	* raptor/rdfdump.c:
3913	Call curl_global_cleanup if using curl to free it's resources.
3914
3915	* raptor/raptor_www.c (raptor_www_init,raptor_www_finish):
3916	Don't init/cleanup curl, we
3917	can't guarantee doing this at most once if a handle is passed in.
3918
3919	* raptor/raptor_www_curl.c (raptor_www_curl_free): Tidy
3920
3921	* raptor/raptor_www_curl.c (raptor_www_curl_init,raptor_www_curl_free):
3922	Use/mark field
3923	curl_init_here to note when to cleanup a handle - don't destroy one
3924	that was provided.
3925
3926	* raptor/raptor_internal.h:
3927	for curl, record when curl_easy_init was done in raptor
3928
3929	* raptor/raptor_general.c (raptor_init): Call raptor_www_init
3930	(raptor_finsh): Call raptor_www_finish
3931	(raptor_parse_uri): Delete www object on failure.
3932
3933	* raptor/configure.ac: Bumped version to 0.9.10
3934
3935	* librdf/rdf_model.c: unused var
3936
3937	* librdf/rdf_stream.c, librdf/rdf_statement.c,
3938	librdf/rdf_serializer.c, librdf/rdf_query.c, librdf/rdf_parser.c,
3939	librdf/rdf_node.c, librdf/rdf_iterator.c, librdf/rdf_hash.c,
3940	librdf/rdf_concepts.c:
3941	Changes to test code after initial locking for threads support.
3942	(main) Testcode - use librdf_world_init_mutex
3943
3944	* librdf/rdf_uri.c: Initial locking for threads from Seth Ladd
3945	(librdf_new_uri): Lock/unlock world for new URI.
3946	(librdf_free_uri): Lock/unlock world for destroying URI.
3947	(main) Testcode - use librdf_world_init_mutex
3948
3949	* librdf/rdf_init.h: Initial locking for threads from Seth Ladd
3950	Added mutex to world.
3951	Added prototype for internal librdf_world_init_mutex
3952
3953	* librdf/rdf_init.c: Initial locking for threads from Seth Ladd
3954	(librdf_free_world): Delete mutex on shutdown.
3955	(librdf_world_init_mutex): Added (internal) to be used by tests
3956	rather than initing all of redland.
3957	(librdf_world_open): Create mutex on startup.
3958
3959	* configure.ac: Initial locking for threads from Seth Ladd
3960	Added --with-threads for POSIX threads
3961
39622003-03-27  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3963
3964	* demos/demo.pl: utf-8 output
3965
3966	* librdf/rdf_storage_hashes.c (librdf_storage_hashes_grow_buffer):
3967	Fix return code sense.
3968	(librdf_storage_hashes_add_remove_statement): Use calculate length
3969	for key/value len, not buffer sizes.
3970	(librdf_storage_hashes_context_add_statement): Return failure if
3971	contexts aren't enabled and this is called.
3972
3973	* librdf/rdf_model.c:
3974	(main) Test code - check get_sources, get_targets, get_arcs
3975
3976	* python/RDF.py (Stream.context): Use self.stream
3977
39782003-03-26  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
3979
3980	* raptor/raptor_set.c:
3981	Only use raptor_set_stats_print with RAPTOR_DEBUG
3982
3983	* raptor/raptor_general.c: Some comment tidying.
3984	(raptor_start_parse): Docucomment.  Copy the uri into the parser
3985	structure (base_uri, locator uri), don't just keep the pointer.
3986	(raptor_free_parser): Free the base URI in the structure, if
3987	present.
3988
3989	* raptor/raptor_parse.c (raptor_xml_parse_start):
3990	Remove uri arg.   Fail if no base URI is
3991	given - stored in the parser object
3992
3993	* raptor/ntriples_parse.c (raptor_ntriples_parse_start):
3994	Remove uri arg.
3995
3996	* raptor/raptor_internal.h:
3997	raptor_parser_factory start method: Remove (base) uri arg, it's in
3998	the object data.
3999
4000	* raptor/raptor_www.c: Use RAPTOR_FREE,MALLOC,CALLOC
4001	(raptor_www_free): Free the www object.  Doh.
4002
4003	* raptor/libraptor.3: raptor_parse_chunk: Takes unsigned char buffer.
4004
4005	* raptor/libraptor.3:
4006	raptor_start_parse: Note NULL base URI ok for ntriples
4007
4008	* raptor/libraptor.3: Typo: raptor_start_parse not raptor_parse_start
4009
4010	* raptor/raptor_general.c (raptor_xml_escape_string):
4011	Make it work with 10ffff again
4012
4013	* raptor/raptor_parse.c (raptor_xml_cdata_handler):
4014	Cast around raptor_xml_escape_string
4015
4016	* raptor/raptor_general.c (raptor_xml_escape_string):
4017	Null terminate new string
4018
4019	* raptor/raptor_www_libxml.c, raptor/raptor_www.c:
4020	Use RAPTOR_WWW_BUFFER_SIZE for I/O buffers
4021
4022	* raptor/raptor_internal.h:
4023	Define RAPTOR_WWW_BUFFER_SIZE for I/O buffers
4024
4025	* raptor/rdfdump.c: Declare raptor_stats_print when RAPTOR_DEBUG
4026
4027	* raptor/raptor_general.c: (raptor_stats_print) C99
4028
4029	* librdf/rdf_model.c (librdf_model_add_typed_literal_statement):
4030	Don't free object here,
4031	librdf_model_add does it as part of freeing the statement.
4032
40332003-03-25  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4034
4035	* demos/rss-show.pl, demos/parser-tests.pl, demos/ntriples.pl,
4036	demos/demo.pl: Updated to 0.9.12 API
4037
40382003-03-24  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4039
4040	* raptor/rdfdump.c: Call raptor_stats_print with RAPTOR_DEBUG
4041
4042	* raptor/raptor_set.c: Record set hits/misses with RAPTOR_DEBUG
4043	(raptor_set_stats_print): Defined with RAPTOR_DEBUG
4044
4045	* raptor/raptor_internal.h:
4046	Move raptor_xml_parser typedef here (still internal).
4047	raptor_xml_parser_stats_print, raptor_set_stats_print: Defined with
4048	RAPTOR_DEBUG
4049
4050	* raptor/raptor_parse.c (raptor_xml_parser_stats_print):
4051	Defined with RAPTOR_DEBUG
4052
4053	* raptor/raptor_general.c (raptor_stats_print):
4054	Defined with RAPTOR_DEBUG
4055
4056	* raptor/raptor_parse.c (raptor_xml_cdata_handler):
4057	Use raptor_xml_escape_string when content
4058	type is an XML literal
4059
4060	* raptor/raptor_general.c (raptor_xml_escape_string):
4061	Now takes and returns lengths
4062	Fix assumption of '\0' terminated strings.
4063	(main): Update for counted strings
4064
4065	* raptor/raptor.h:
4066	raptor_xml_escape_string now takes and returns lengths
4067
4068	* raptor/raptor.h: Added raptor_xml_escape_string
4069
4070	* raptor/Makefile.am: Added raptor_general_test
4071
4072	* raptor/raptor_general.c (raptor_xml_escape_string):
4073	Added, XML-escapes UTF-8 strings.
4074	(main): Added set of tests for raptor_xml_escape_string
4075
40762003-03-23  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4077
4078	* raptor/tests/ex-48.out, raptor/tests/ex-48.rdf:
4079	ex-48 parse type literal with entity encoding
4080
4081	* raptor/tests/Makefile.am: Added ex-48
4082
4083	* raptor/raptor_www_libxml.c (raptor_www_libxml_fetch):
4084	Make this work again
4085
4086	* raptor/raptor_parse.c (raptor_record_ID): Dealloc item after adding
4087
4088	* librdf/rdf_parser_raptor.c: raptor_free now raptor_free_parser
4089	(librdf_raptor_uri_as_counted_string): Added
4090	Use it to register the raptor_uri
4091
4092	* raptor/raptor_parse.c: typo
4093
4094	* raptor/raptor_parse.c:
4095	Remove raptor_id_list implementation for ID checking to use raptor_set.
4096	(raptor_xml_parse_init): Init raptor_set for ids.
4097	(raptor_xml_parse_terminate): Use raptor_free_set.
4098	(raptor_record_ID): Use raptor_set_add to check for unique "ID base-URI"
4099	(raptor_free_ID_list): Gone
4100
4101	* raptor/raptor_uri.c (raptor_default_uri_as_counted_string,
4102	(raptor_uri_as_counted_string): Added and used in default factory.
4103
4104	* raptor/raptor.h: Added raptor_uri_as_counted_string.
4105
4106	* raptor/raptor_internal.h:
4107	Added raptor_set and raptor_new_set constructor, raptor_free_set
4108	destructor and raptor_set_add only method
4109
4110	* raptor/Makefile.am: Added raptor_set.c, raptor_set_test
4111
4112	* raptor/raptor_set.c: Raptor sets for ID checking
4113
41142003-03-20  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4115
4116	* demos/rss-show.pl: sort feeds case insensitively
4117
4118	* demos/rss-show.pl: Added Annotate module
4119
4120	* librdf/rdf_storage_hashes.c:
4121	Add key/value buffers to hash context and share/grown them as needed
4122	to prevent a lot of unncessary malloc/frees.
4123	(librdf_storage_hashes_terminate): Delete shared key/value buffers.
4124	(librdf_storage_hashes_grow_buffer): Added to grow them when needed.
4125	(librdf_storage_hashes_add_remove_statement): Use
4126	librdf_storage_hashes_grow_buffer and shared key/value buffers.
4127
4128	* librdf/rdf_hash_memory.c (librdf_hash_memory_expand_size):
4129	Revert bucket rehashing code to the older, simpler, slightly
4130	slower (2x work) since changed version failed.
4131
4132	* librdf/rdf_hash_memory.c:
4133	Switched to same hash algorithm as perl, inlined it.
4134	(librdf_hash_memory_expand_size): When expanding, only move the nodes
4135	that need it, don't move everything.
4136
41372003-03-19  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4138
4139	* examples/example4.c: Free nodes on failure of get_source/target/arc
4140
4141	* raptor/tests/Makefile.am: Added OWL namespace document / rdf
4142	schema owl-schema.rdf, owl-schema.out
4143
4144	* raptor/raptor_www.c: No ghttp, init w3c libwww
4145
4146	* librdf/rdf_statement.c (librdf_statement_to_string):
4147	Init statement_string_len to 0
4148
4149	* librdf/rdf_hash_memory.c (librdf_hash_memory_expand_size):
4150	Quick hack to make hash grow.
4151	Needs a proper fix.
4152
4153	* librdf/rdf_statement.c (librdf_statement_to_string):
4154	Use librdf_node_to_counted_string to save on strlen calls.
4155
4156	* librdf/rdf_node.c (librdf_node_to_string):
4157	Now uses librdf_node_to_counted_string.
4158	(librdf_node_to_counted_string): Added, returns already known length.
4159	Uses librdf_uri_to_counted_string to save on strlen calls.
4160	(librdf_node_encode): Use librdf_uri_as_counted_string to save on
4161	strlen calls.
4162
4163	* librdf/rdf_node.h: Added librdf_node_to_counted_string
4164
4165	* librdf/rdf_uri.c (librdf_uri_as_counted_string,
4166	librdf_uri_to_counted_string): Added returning the already
4167	stored/calculated length of the string.
4168
4169	* librdf/rdf_uri.h:
4170	Added librdf_uri_as_counted_string, librdf_uri_to_counted_string
4171
4172	* raptor/tests/owl-schema.out, raptor/tests/owl-schema.rdf:
4173	OWL namespace schema
4174
4175	* raptor/raptor_www_libwww.c: add fatal does-not-work error
4176
4177	* raptor/configure.ac, raptor/raptor_internal.h,
4178	raptor/raptor_www_ghttp.c: Delete libghttp
4179
41802003-03-18  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4181
4182	* raptor/raptor_www_libwww.c: Raptor WWW with W3C libwww
4183
4184	* raptor/rdfdump.c:
4185	Added -c/--count option to just count triples, don't print anything.
4186
4187	* raptor/raptor_www_test.c: Use raptor_www_init/finish
4188
4189	* raptor/raptor_www_libxml.c, raptor/raptor_www_ghttp.c:
4190	Handle www->failed and aborting transfer.
4191
4192	* raptor/raptor_www_curl.c: Handle www->failed and aborting transfer.
4193	(raptor_www_curl_init): Use passed-in connection if available.
4194
4195	* raptor/raptor_www.c (raptor_www_init): Added, for once-only init.
4196	(raptor_www_finish): Added, for once-only tidy.
4197	(raptor_www_new): Now uses new constructor
4198	(raptor_www_new_with_connection): Added, allows re-use of existing
4199	www library connection - just curl at present.
4200	(raptor_www_get_connection): Added, returns current libwww library
4201	connection.
4202	(raptor_www_abort): Added to stop a www transaction.
4203	(raptor_www_file_fetch): Tidying of errors; handle abort.
4204	(raptor_www_fetch): Uses raptor_www_file_fetch for all files.
4205
4206	* raptor/raptor_internal.h: Added W3C libwww prototypes.
4207
4208	* raptor/raptor_parse.c:
4209	Throughout all SAX event handlers - if rdf_parser->failed set, return
4210	immediately, doing no work.
4211
4212	* raptor/raptor_general.c (raptor_parse_uri_write_bytes):
4213	Use raptor_www_abort if parsing
4214	fails.
4215	(raptor_parse_uri): Return error status.  Pass on is_end empty chunk.
4216	(raptor_parser_abort): Added, setting failed flag.
4217	(raptor_print_statement_detailed): Typo
4218
4219	* raptor/raptor.h: Added raptor_www_abort
4220
4221	* raptor/raptor.h: Add raptor_www_init, raptor_www_finish.
4222	Add raptor_www_new_with_connection
4223	Add raptor_www_get_connection
4224
4225	* raptor/configure.ac: Added w3c libwww configuring
4226
42272003-03-16  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4228
4229	* raptor/rdfdump.c: Use raptor_parse_uri
4230
4231	* raptor/raptor_general.c (raptor_parse_uri_write_bytes):
4232	Added, to support:
4233	(raptor_parse_uri): Added, using raptor_www to get and deal with all
4234	the data in one go.
4235
4236	* raptor/raptor.h: raptor_parse_uri takes optional base_uri
4237
4238	* raptor/raptor_www_test.c: Use URI from context.
4239	Take www arg on handlers
4240	Use raptor_uri
4241
4242	* raptor/raptor_www_libxml.c, raptor/raptor_www_ghttp.c, raptor/raptor_www_curl.c:
4243	Use URI from context.
4244	Take www arg on handlers
4245
4246	* raptor/raptor_www.c (raptor_www_set_userdata): Gone
4247	(raptor_www_free): Free request uri
4248	(raptor_www_set_write_bytes_handler,
4249	raptor_www_set_content_type_handler): Added
4250	(raptor_www_file_fetch): pass www to write_bytes
4251	(raptor_www_fetch): Don't pass URI on.
4252
4253	* raptor/raptor_internal.h: Store raptor_uri of request
4254	Use new declared write_bytes, content_type handlers
4255	*fetch methods don't take URI string
4256
4257	* raptor/raptor.h:
4258	Declare handlers for raptor www write bytes, content type
4259	raptor_www_fetch now takes a raptor_uri
4260
4261	* raptor/raptor_parse.c:
4262	Fix broken-fix for broken-expat UTF8 BOM crash.
4263	tokens_count is on the rdf_xml_parser not rdf_parser
4264
4265	* raptor/configure.ac: tweak
4266
4267	* raptor/configure.ac: tidy libcurl version
4268
4269	* raptor/raptor_internal.h, raptor/configure.ac:
4270	No more gnome-xml/libxml.h
4271
4272	* raptor/configure.ac: Min libxml2 now 2.4.0
4273
4274	* raptor/configure.ac: Don't look for xml-config
4275
4276	* raptor/raptor_general.c (raptor_parse_file):
4277	Tidy up if raptor_start_parse fails
4278
4279	* raptor/raptor_general.c:
4280	Removed raptor_start_parse_file - merged into raptor_parse_file
4281
4282	* raptor/raptor_www.c (raptor_www_file_fetch): Used for RAPTOR_WWW_NONE
4283	Report file open errors, correct file read eof handling.
4284	(raptor_www_fetch) Use only raptor_www_file_fetch for RAPTOR_WWW_NONE
4285
4286	* raptor/raptor_general.c (raptor_start_parse_file):
4287	Improve file open error message
4288
4289	* raptor/configure.ac:
4290	Added --with-www=none option and RAPTOR_WWW_NONE to indicate it
4291
42922003-03-15  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4293
4294	* raptor/raptor_www.c (raptor_www_error): Use RAPTOR_FREE
4295
4296	* raptor/raptor_www_ghttp.c (raptor_www_ghttp_fetch):
4297	call raptor_www_error
4298
4299	* raptor/raptor_www_test.c: Call raptor_uri_init
4300
4301	* raptor/raptor_www_curl.c (raptor_www_curl_fetch):
4302	call raptor_www_error
4303
4304	* raptor/raptor_internal.h: Use raptor_message_handler again
4305
4306	* raptor/raptor.h:
4307	Use raptor_message_handler again in raptor_www_set_error_handler,
4308	raptor_www_error
4309
4310	* raptor/raptor_www.c (raptor_www_free): Tidy locator URI
4311	(raptor_www_set_error_handler, raptor_www_error): Use
4312	raptor_message_handler again.
4313	(raptor_www_error): Use raptor_locator in output, error handler.
4314	(raptor_www_fetch): Store the URI string of request in the locator
4315
4316	* raptor/raptor.h: Declare raptor_www_message_handler (no locator)
4317
4318	* raptor/raptor_general.c: raptor_vsnprintf now internally visible.
4319
4320	* raptor/raptor_internal.h:
4321	Use different error handler, no parser context.
4322	raptor_vsnprintf now internally visible.
4323	Added raptor_www_error prototype
4324
4325	* raptor/raptor_www.c:
4326	Only enable raptor_www_file_fetch with libxml, libghttp
4327	(raptor_www_set_error_handler): Use different error handler, no
4328	parser context.
4329
4330	* raptor/configure.ac, raptor/Makefile.am:
4331	Added raptor WWW enabling, configuring
4332
4333	* raptor/raptor_internal.h:
4334	Added raptor WWW retrieval internal includes, structs, prototypes
4335
4336	* raptor/raptor.h: Added raptor WWW retrieval prototypes
4337
4338	* raptor/raptor_www.c, raptor/raptor_www_curl.c,
4339	raptor/raptor_www_ghttp.c, raptor/raptor_www_libxml.c,
4340	raptor/raptor_www_test.c: Raptor WWW retrieval
4341
43422003-03-13  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4343
4344	* librdf/rdf_parser_raptor.c (librdf_parser_raptor_parse_file_as_stream):
4345	Save copies of source
4346	and base URI - don't assume they will be around for the life of a
4347	parse.
4348	(librdf_parser_raptor_serialise_finished): Free the copied uris.
4349
4350	* examples/example4.c: document parse-stream
4351
4352	* python/RDF.py (Node.__init__):
4353	Add world arg to librdf_new_node_from_blank_identifier
4354
43552003-03-09  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4356
4357	* Makefile.am: added demos dir
4358
4359	* demos/rss-show.pl, demos/ntriples.pl: absolutize some doc urls
4360
4361	* configure.ac, Makefile.am: added demos dir
4362
4363	* demos/rss-show.pl, demos/parser-tests.pl, demos/ntriples.pl,
4364	demos/demo.pl: point to source code
4365
4366	* demos/rss-show.pl, demos/parser-tests.pl, demos/ntriples.pl,
4367	demos/demo.pl: add source code
4368
4369	* demos/Makefile.am, demos/demo.pl, demos/ntriples.pl,
4370	demos/parser-tests.pl, demos/rss-show.pl: Redland CGI demos
4371
43722003-03-06  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4373
4374	* perl/serialize.pl (format_element_content,format_attribute):
4375	Added to escape &, <, > things  etc.
4376
43772003-03-05  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4378
4379	* perl/serialize.pl: Whitespace tidying.
4380	(emit_literal_element): Added, for doing 1-line literals
4381	Fix datatypes.
4382	Emit multiple rdf:type properties too.
4383
4384	* python/RDF.py:
4385	(Node.get_literal_value) Correct datatype URI method call to only
4386	operate if there is a datatype URI.
4387	(Stream._del_): Work when there is no redland Stream.
4388	(Parse.parse_as_stream): Return None if parsing fails, not an
4389	empty Stream.
4390
4391	* perl/lib/RDF/Redland/Node.pm (literal_datatype):
4392	Added, return the URI of the literal datatype or
4393	undef if not one.
4394
4395	* perl/lib/RDF/Redland/Parser.pm (parse_as_stream):
4396	Return undef if parsing fails, don't return a stream
4397
4398	* perl/lib/RDF/Redland/Stream.pm (DESTROY):
4399	Handle wrapping an empty stream - might happen when a
4400	search fails straight away.
4401
4402	* librdf/rdf_parser_raptor.c
4403	(librdf_parser_raptor_new_statement_handler): Handle XMLLiteral
4404	and datatyped literal URIs - pass them on as appropriate statements.
4405
4406	* perl/serialize.pl (predicate_split): Fix
4407	(emit_empty_element) Pull out some more element
4408	building stuff - for now.
4409	main - declare an OWL namespace just for testing
4410
4411	* perl/serialize.pl: added emit_start_element, emit_end_element
4412	now rdf:RDF declares its namespaces
4413
4414	* perl/serialize.pl: Make blank node subject and objects work.
4415
44162003-03-04  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4417
4418	* raptor/raptor.h: Export raptor_free_parser with RAPTOR_API
4419
4420	* raptor/win32_config.h: add trailing #endif
4421
4422	* raptor/win32_config.h: s/WIN32_LEAD_AND_MEAN/WIN32_LEAN_AND_MEAN/
4423
4424	* raptor/raptor_parse.c (raptor_xml_comment_handler):
4425	Added - nop at present.
4426	(raptor_xml_parse_init): For expat, use raptor_xml_comment_handler
4427
4428	* raptor/raptor_libxml.c:
4429	(raptor_libxml_init) Use raptor_xml_comment_handler
4430
4431	* raptor/raptor_internal.h: Add raptor_xml_comment_handler prototype
4432
4433	* raptor/configure.ac:
4434	Try to make maintainer mode flags match redland's defaults.
4435
4436	* Makefile.am: expat sources not included
4437
4438	* configure.ac: expat sources not included
4439	building against expat / libxml sources no longer supported.
4440
4441	* librdf/rdf_model.c (librdf_model_add_typed_literal_statement):
4442	Document - nodes become owned by the model.
4443
4444	* python/RDF.py: Bogus quotes
4445
4446	* java/org/librdf/redland/Model.java:
4447	(add) (nodes, typed nodes versions) Copy redland nodes before adding.
4448
4449	* perl/t/test2.t:
4450	Added test of Model method add_typed_literal_statement
4451	Added test of Serializer method serialize_model_to_file
4452
4453	* python/test/test.py: Added test of model.add_typed_literal_statement
4454
4455	* python/RDF.py (Model.add_typed_literal_statement):
4456	Copy redland nodes before adding.
4457
44582003-03-03  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4459
4460	* perl/Makefile.am: make clean targets run when perl isn't enabled.
4461
4462	* perl/Makefile.PL: Grab version from redland-src-config
4463
4464	* perl/Makefile.am: Use $(srcdir)/Makefile.PL
4465
4466	* python/Makefile.am: Use $(srcdir)/setup.py
4467
4468	* java/Makefile.am:
4469	clean-java - don't leap down subdirs to clean stuff too early -
4470	confuses autoconf.
4471
4472	* configure.ac: More AC_CONFIG_FILES tidying
4473
4474	* raptor/configure.ac, raptor/Makefile.am:
4475	Fix cflags/cppflags when in redland
4476
4477	* librdf/rdf_serializer_raptor.c
4478	(librdf_serializer_print_statement_as_ntriple):
4479	No need for fprintf.
4480
4481	* librdf/rdf_serializer_raptor.c: No need for ntriples.h
4482	(librdf_serializer_print_statement_as_ntriple): Handle datatyped
4483	literals.
4484
4485	* perl/lib/RDF/Redland/Node.pm (new_from_typed_literal):
4486	Added, creating a datatyped literal.
4487
4488	* perl/lib/RDF/Redland/Model.pm (add, add_typed_literal_statement):
4489	Copy the nodes before passing on
4490	- more natural for perl.
4491
4492	* librdf/Makefile.am: s/AML_CFLAGS/AM_CFLAGS/
4493	Give rdf_uri_test the raptor includes
4494
4495	* librdf/rdf_node.c (librdf_node_decode):
4496	Correct datatype URI/lang decoded in wrong
4497	order.
4498	(main): Add de/encode of datatyped node.
4499
4500	* librdf/rdf_node.c (librdf_node_encode):
4501	Copy datatype URI string not junk from the URI
4502	object.
4503	(main): Add use of librdf_new_node_from_typed_literal
4504
4505	* examples/example4.c:
4506	Added add-typed command to use librdf_new_node_from_typed_literal
4507
4508	* autogen.sh: Require autoconf 2.53+
4509
4510	* configure.ac: Require autoconf 2.53+
4511	Update AC_OUTPUT to new form
4512
4513	* Redland.i: Added librdf_new_node_from_typed_literal
4514
4515	* redland-src-config.in:
4516	use abs_top_srcdir for all refs to raptor-src-config
4517
45182003-03-02  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4519
4520	* raptor/tests/ex-46.out, raptor/tests/ex-46.rdf:
4521	make rdf:li and rdf_2 property elements generate different triples
4522
45232003-02-27  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4524
4525	* raptor/tests/ex-46.out: fix
4526
4527	* raptor/tests/Makefile.am: Added ex-47
4528
4529	* raptor/tests/ex-47.out, raptor/tests/ex-47.rdf:
4530	Exercise all rdfs vocab
4531
4532	* raptor/tests/Makefile.am: Added ex-46
4533
4534	* raptor/tests/ex-46.out, raptor/tests/ex-46.rdf:
4535	Exercise all rdf vocab
4536
45372003-02-26  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4538
4539	* python/RDF.py (RDF.set_message_handler): Added. Make a class method
4540	(message_handler): Moved out of RDF.World class.
4541	(RDF.World): Use RDF.message_handler
4542	(RDF.Stream): Docs.
4543
4544	* librdf/rdf_storage_hashes.c
4545	(librdf_storage_hashes_node_iterator_create):
4546	Handle node being NULL,
4547	for example when dealing with a predicates index p2so.
4548
45492003-02-25  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4550
4551	* repat/Makefile.am: Make only librepat.la
4552
4553	* Makefile.am: Add man pages to dist
4554
45552003-02-24  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4556
4557	* raptor/win32/raptor.plg, raptor/win32/Makefile.am: deleted raptor.plg
4558
4559	* raptor/win32/raptor.dsp, raptor/win32/README:
4560	Updated win32 config - from contributed patches
4561
45622003-02-23  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4563
4564	* raptor/raptor_uri.c: Correct :'s turning into |'s in win32 file URIs
4565
45662003-02-20  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4567
4568	* autogen.sh: export autotools to configure
4569
4570	* autogen.sh: Tidying
4571
4572	* raptor/autogen.sh, autogen.sh:
4573	run libtoolize in each configure.ac dir
4574
4575	* Makefile.am: acconfig.h not needed
4576
4577	* utils/Makefile.am, repat/Makefile.am, librdf/Makefile.am,
4578	expat/xmltok/Makefile.am, expat/xmlparse/Makefile.am,
4579	examples/Makefile.am:
4580	Updates for automake 1.5-1.7
4581
4582	* autogen.sh: Update to use automake 1.6, autoconf 2.52 min
4583
4584	* configure.ac: configure.ac replacing configure.in
4585
4586	* acconfig.h, configure.in:
4587	Replace configure.in acconfig.h with configure.ac
4588
4589	* raptor/win32_config.h:
4590	win32 has C99 compatible vsnprintf called _vsnprintf
4591
4592	* raptor/configure.ac:
4593	Check for vsnprintf and check for C99 compatible return value.
4594
4595	* raptor/raptor_general.c (raptor_vsnprintf):
4596	Added for handling compatibilty with vsnprintf
4597	that doesn't match C99.
4598
45992003-02-19  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4600
4601	* raptor/tests/Makefile.am:
4602	Use $(ECHO) which may be different from sh's echo
4603
4604	* raptor/Makefile.am:
4605	Changing, moved raptor_getopt.h to rapper_SOURCES after automake
4606	manual recommendation.
4607
4608	* raptor/Makefile.am: Put raptor_getopt.h in noinst_HEADERS
4609
4610	* raptor/Makefile.am: No need for EXTRA_libraptor_la_SOURCES
4611
4612	* raptor/Makefile.am: Use LTLIBOBJS for extra libraptor objs
4613
4614	* raptor/raptor.h: again
4615
4616	* raptor/raptor.h: don't do deprecated on broken OSX gcc
4617
4618	* raptor/raptor_getopt.h, raptor/getopt.c: No need for prefix
4619
4620	* raptor/getopt.c: Duh - use raptor getopt header
4621
4622	* raptor/Makefile.am:
4623	Use RAPPER_EXTRA_OBJS to optionally add getopt to rapper only
4624
4625	* raptor/configure.ac: Add getopt object to RAPPER_EXTRA_OBJS
4626
4627	* raptor/rdfdump.c: Add raptor_getopt.h for local version
4628
4629	* raptor/raptor_getopt.h: Define rest of getopt externs
4630
4631	* raptor/getopt.c: More prefixes
4632
4633	* raptor/raptor_getopt.h, raptor/getopt.c: Public domain getopt
4634
4635	* raptor/configure.ac: Check for getopt and add getopt.o if it missing.
4636
4637	* raptor/autogen.sh:
4638	try asking the progs for their version - slower, but right
4639
4640	* raptor/autogen.sh: tidying
4641
4642	* raptor/acconfig.h: acconfig.h obsoleted
4643
4644	* raptor/Makefile.am: Use AM_CPPFLAGS
4645
4646	* raptor/autogen.sh:
4647	Min versions are bumpled - 2.52 for autoconf, 1.6 for automake
4648	Now hunts for newest, shinyest autoconf and automake/aclocal and uses
4649	them whatever is available.
4650
46512003-02-18  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4652
4653	* raptor/configure.ac: autoconf 2.5x configure.ac
4654
4655	* raptor/configure.in: Replaced with autoconf 2.5x configure.ac
4656
46572003-02-15  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4658
4659	* raptor/raptor.h: Move stuff around, consolidate deprecated bits
4660
4661	* raptor/ntriples_parse.c, raptor/rdfdump.c: No need for ntriples.h
4662
4663	* raptor/raptor.h: Moved all ntriples.h defines here.
4664	Defined RAPTOR_DEPRECATED (with gcc 3.1+) and used on old api calls.
4665
4666	* raptor/ntriples.h:
4667	Moved all definitions to raptor.h - this file is now deprecated.
4668
4669	* python/RDF.py: typo
4670
46712003-02-14  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4672
4673	* debian/changelog, debian/libredland0-dev.install:
4674	added redland-config.1
4675
4676	* debian/libredland0-dev.manpages: Added redland-config.1
4677
4678	* debian/Makefile.am: Added libredland0-dev.manpages
4679
4680	* Makefile.am: added redland-config.1
4681
4682	* redland-config.1: redland-config manual page
4683
4684	* redland-config.in, raptor/raptor-config.in: No exec-prefix
4685
4686	* raptor/raptor-config.1: Manual page for raptor-config
4687
4688	* raptor/Makefile.am: Added raptor-config.1
4689
4690	* debian/Makefile.am: missed a backslash
4691
4692	* debian/redland1.files, debian/manpage.1.ex, debian/shlibs.local.ex:
4693	Not used
4694
4695	* debian/rules.in, debian/copyright, debian/control,
4696	debian/changelog, debian/README.Debian, debian/Makefile.am:
4697	Updated for debian packaging 0.9.12
4698
4699	* debian/libredland0-dev.docs, debian/libredland0-dev.files,
4700	debian/libredland0-dev.install, debian/libredland0.files,
4701	debian/libredland0.install, debian/libredland0.manpages:
4702	Redland debian packaging
4703
4704	* debian/doc-base.package, debian/docs, debian/dirs: Not used
4705
4706	* raptor/rapper.1: EXAMPLE
4707
47082003-02-13  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4709
4710	* Redland.i: Added librdf_node_get_literal_value_datatype_uri
4711
4712	* raptor/tests/Makefile.am: $name=>$$name
4713
4714	* configure.in: Bumped version to 0.9.13
4715
4716	* Snapshotted redland_0_9_12 for 0.9.12 release
4717
4718	* raptor/raptor.spec.in: release is 1
4719
47202003-02-12  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4721
4722	* librdf/redland.spec.in, Makefile.am: No RELEASE, TODO
4723
4724	* raptor/Makefile.am: Restore LICENSE.txt
4725
4726	* raptor/Makefile.am: No LICENSE.txt in dist
4727
4728	* java/org/librdf/redland/Makefile.am: Add Hash.ajva to dist
4729
4730	* librdf/redland.spec.in:
4731	Move man pages around.  All headers now in devel.
4732
4733	* librdf/redland.spec.in: Don't put raptor man files in this rpm
4734
4735	* librdf/redland.spec.in: Require raptor 0.9.8
4736
4737	* raptor/raptor_uri.c (main):
4738	Use lstat, reading a selection of dirs to try harder to test
4739	relative file URIs.
4740
4741	* raptor/configure.in: check for sys/stat.h (for raptor_uri_test main)
4742
4743	* raptor/tests/Makefile.am: There is no portable test == operator
4744
4745	* raptor/raptor_parse.c (raptor_xml_start_element_handler):
4746	Updated call to
4747	raptor_namespaces_start_namespace to use error_handler, error_data
4748	parameters
4749
4750	* raptor/raptor_general.c (raptor_start_parse):
4751	Updated call to raptor_namespaces_init to use
4752	error_handler, error_data parameters
4753
4754	* raptor/raptor_internal.h:
4755	Updated raptor_namespaces_init, raptor_namespaces_start_namespace,
4756	raptor_namespace_new with error_handler, error_data parameters
4757
4758	* raptor/raptor_namespace.c: (raptor_namespaces_init,
4759	raptor_namespaces_start_namespace, raptor_namespace_new)
4760	Add error handler and data parameters and use to explain how
4761	xmlns:foo="" isn't allowed
4762
4763	* utils/Makefile.am: Add update-api-0912.pl to dist
4764
47652003-02-11  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4766
4767	* raptor/raptor_parse.c:
4768	multiple objects of a property element (statement) is an error
4769
4770	* raptor/tests/Makefile.am:
4771	Report warnings when they occur.  Print the warning text
4772
4773	* raptor/tests/bad-11.rdf: now xml
4774
4775	* raptor/tests/Makefile.am: typo - restult
4776
4777	* raptor/tests/bad-11.rdf:
4778	Check xmlns with no namespace name (URI) fails
4779
4780	* raptor/tests/Makefile.am: Added bad-11
4781
4782	* raptor/raptor_libxml.c (raptor_libxml_update_document_locator):
4783	Handle empty parser context.
4784
4785	* raptor/tests/Makefile.am: ex-46 now bad-10
4786
4787	* raptor/tests/bad-10.rdf, raptor/tests/ex-46.rdf,
4788	raptor/tests/ex-46.out: Now bad-10
4789
4790	* raptor/raptor_parse.c (raptor_xml_parse_chunk_):
4791	Make an empty rdf/xml bytestream an
4792	illegal doc (like expat) and return an error.
4793
4794	* raptor/raptor_libxml.c (raptor_libxml_update_document_locator):
4795	Don't use loc if it is NULL
4796	such as errors before start of XML document.
4797
4798	* raptor/raptor_libxml.c:
4799	Check for xmlSAXHandler externalSubset field, not present in old
4800	libxml v1.  Whether raptor works after this is unlikely and untested.
4801
4802	* raptor/configure.in: Add old libxml V1 warning and suggestion
4803
4804	* raptor/acconfig.h: Added RAPTOR_LIBXML_XMLSAXHANDLER_EXTERNALSUBSET
4805
4806	* raptor/configure.in: Check for xmlSAXHandler externalSubset field
4807
48082003-02-10  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4809
4810	* raptor/raptor_locator.c (raptor_print_locator):
4811	Only print non-negative line numbers
4812
4813	* raptor/raptor_parse.c (raptor_xml_parse_chunk_):
4814	For libxml, handle first chunk being
4815	empty, when the XML parser context, xc, is attempted to be initialiased
4816
4817	* raptor/tests/Makefile.am:
4818	Added ex-46 (Empty file should give 0 triples)
4819
4820	* raptor/tests/ex-46.out, raptor/tests/ex-46.rdf:
4821	Empty file should give 0 triples
4822
48232003-01-31  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4824
4825	* Makefile.am: utils now has buildable stuff
4826
4827	* librdf/rdf_hash_bdb.c:
4828	Make BDB open failures return librdf_error even when debug set.
4829
4830	* configure.in, Makefile.am: scripts now utils
4831
4832	* utils/Makefile.am, utils/db_upgrade.c, utils/update-api-0912.pl:
4833	scripts now utils, added redland-db-upgrade util
4834
4835	* librdf/redland.spec.in: Added redland-db-upgrade
4836
48372003-01-30  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4838
4839	* configure.in: don't destroy passed in LDFLAGS value
4840
48412003-01-29  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4842
4843	* tcl/Makefile.am:
4844	Fix so it doesn't compile over the input file.  Bad $? / $< again
4845
4846	* java/org/librdf/redland/Model.java:
4847	(add/remove) Added contexts version of methods
4848	(context_remove): Added, remove all statements with given context.
4849
4850	* java/Makefile.am: $< wrong for build jars, add all files
4851
4852	* python/RDF.py:
4853	(Model) Added contexts methods, as optional args to add/remove
4854	statements methods.
4855	New method: context_remove_statements
4856
4857	* perl/lib/RDF/Redland/Model.pm (add_statement, add_statements,
4858	remove_statement): Add optional context arg.
4859	(remove_context_statements): Added.
4860
4861	* configure.in:
4862	Make xml parser prefer libxml, to match what raptor does.  Expat will
4863	be added if required/available anyway, such as for repat.
4864	If expat is needed for raptor, ensure it uses system expat first if
4865	available rather than always use source version.
4866
4867	* php/php.ini: added safe_mode = Off, says Ron
4868
4869	* autogen.sh: require swig 1.3.14 min
4870
4871	* docs/api.sgml.in, docs/fix-python-xhtml,
4872	docs/fix-pod-xhtml: dates
4873
4874	* configure.in, Makefile.am:
4875	Renamed aux dir to scripts
4876
4877	* scripts/Makefile.am, scripts/update-api-0912.pl: Moved from aux dir
4878
48792003-01-27  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4880
4881	* tcl/Makefile.am, ruby/Makefile.am, raptor/Makefile.am,
4882	python/Makefile.am, perl/Makefile.am, java/Makefile.am,
4883	docs/Makefile.am, php/Makefile.am:
4884	Remove $? and replace with $< or full dependencies
4885
48862003-01-23  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4887
4888	* librdf/rdf_storage_hashes.c (librdf_storage_hashes_register):
4889	Return correct failure sense.
4890
4891	* librdf/rdf_storage_hashes.c (librdf_storage_hashes_terminate):
4892	Protect from empty arrays
4893
4894	* librdf/rdf_storage_hashes.c (librdf_storage_hashes_register):
4895	Don't leak full_name memory when
4896	librdf_new_hash fails.
4897
4898	* librdf/rdf_storage_hashes.c (librdf_storage_hashes_init_common):
4899	On failure to create lower level
4900	hashes, don't free stuff here, librdf_storage_hashes_terminate will
4901	do it, eventually.
4902
49032003-01-21  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4904
4905	* raptor/ntriples_parse.c:
4906	Fix macro IS_ASCII_DIGIT which refused to allow '0'.
4907
49082003-01-13  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4909
4910	* raptor/rdfdump.1: rdfdump.1 renamed to rapper.1
4911
4912	* librdf/redland.spec.in:
4913	Updated for redland 0.9.12 (requires installed raptor to build)
4914
4915	* raptor/raptor.spec.in, raptor/tests/Makefile.am,
4916	raptor/Makefile.am, raptor/INSTALL.html: rdfdump now rapper
4917
4918	* raptor/rapper.1: rdfdump.1 renamed to rapper.1
4919
49202003-01-07  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4921
4922	* librdf/rdf_parser_sirpac.c: No longer needed
4923
49242003-01-03  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4925
4926	* examples/Makefile.am: tweak clean
4927
4928	* librdf/rdf_model.c:
4929	(librdf_model_get_source,librdf_model_get_target,librdf_model_get_arc):
4930	Return a new copy of the shared node, restoring the declared API
4931	behaviour.
4932
4933	* Makefile.am: Added RELEASE.html RELEASE
4934
4935	* librdf/rdf_parser_repat.c
4936	(librdf_parser_repat_parse_file_into_model): Tidy up internal stream
4937	after add_statements no longer frees it.
4938
4939	* librdf/rdf_parser_raptor.c
4940	(librdf_parser_raptor_parse_file_into_model): Tidy up internal stream
4941	after add_statements no longer frees it.
4942
49432003-01-02  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4944
4945	* examples/example4.c: Revert temporary context dbd-store ifdef
4946
4947	* librdf/rdf_node.c (librdf_new_node_from_typed_literal):
4948	Docucomment fix
4949
49502003-01-01  Dave Beckett  <Dave.Beckett@bristol.ac.uk>
4951
4952	* docs/api.sgml.in: Added general query, serializer doc parts
4953
4954	* aux/update-api-0912.pl: Add model add_statement changes checks
4955
4956	* aux/update-api-0912.pl: Docs
4957
4958	* aux/update-api-0912.pl: Try to catch stream/iterator api changes too
4959