-
Notifications
You must be signed in to change notification settings - Fork 62
/
RELEASE.html
1315 lines (950 loc) · 46.1 KB
/
RELEASE.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Raptor RDF Parser Toolkit - Release Notes</title>
</head>
<body>
<h1>Raptor RDF Parser Toolkit - Release Notes</h1>
<h2 id="rel1_4_11"><a name="rel1_4_11">Raptor 1.4.11 Changes</a></h2>
<h3>General Changes</h3>
<p>Added <code>raptor_get_feature_count()</code> to return
the count of features, in preference to using the
macro value <code>RAPTOR_FEATURE_LAST</code>.
</p>
<p>Added <code>raptor_www_set_uri_filter()</code> method of the
WWW class (<code>raptor_www</code>) objects to have an
optional URI filter function that checks if the URL given is
allowed to be retrieved, or denied entirely.
</p>
<p>Fixed issues reported on the <a href="http://bugs.librdf.org/">Redland Issue Tracker</a>:</p>
<ul>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=0000112">#0000112</a>: raptor_namespaces_qname_from_uri not public API?</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=0000110">#0000110</a>: strcasecmp problem under windows (raptor_rss.c does not compile)</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=0000091">#0000091</a>: guess parser should guess the syntax each time it is run, not be fixed</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=0000089">#0000089</a>: Add a NONET feature to prevent network fetches</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=0000041">#0000041</a>: Allow multiple transformation URLs in data-view:transformation property</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=0000014">#0000014</a>: bNode content written twice in rdfxml-abbrev output mode</li>
</ul>
<h3>Documentation Changes</h3>
<p>The
<a href="http://librdf.org/raptor/api/">Raptor Reference Manual</a>
now includes descriptions of all the parsers and serializers and the
tutorial has a new section describing how to filter URIs and deny
network requests.</p>
<h3>Parser Changes</h3>
<p>Added functionality to prevent network requests either via setting
a new feature <code>RAPTOR_FEATURE_NO_NET</code> that denies network
requests during a parser operation or with a URI filter function
<code>raptor_parser_set_uri_filter()</code>. This function uses
<code>raptor_www_set_uri_filter()</code> internally.
</p>
<p>Added <code>raptor_get_need_base_uri()</code> to tell if a parser
requires a base URI argument. Presently the <em>N-Triples</em> parser
is the only parser that does not require a base URI.
<code>raptor_start_parse()</code> will now throw an error if no base
URI is given and it is needed.
</p>
<p>The <em>GRDDL parser</em> was changed to
handle a list of URIs in the profile so it now
can support <code>dataview:transformation</code> in XML taking a list
of transformations as defined in
<a href="http://www.w3.org/2004/01/rdxh/spec#grddl-xhtml">The GRDDL profile for XHTML</a> part of the GRDDL specification.
It now also recognises
<a href="http://research.talis.com/2005/erdf/wiki/Main/RdfInHtml">Embedded RDF</a> and
<a href="http://microformats.org/wiki/hcalendar">HCalendar</a>
using well known XPaths and transforms them to RDF triples using well
known XSLT sheet URIs.
</p>
<p>The <em>Guess parser</em> now resets after each parse and does a
fresh guess on the syntax based on the incoming information.
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=91">Issue#0000091</a>
</p>
<p>The <em>Turtle parser </em> (and experimental N3 parser) were
changed to now require base URIs as they always should have. The
error messages when reporting problems with grammar tokens now return
better responses. Added better memory cleanup during parser error
recovery.
</p>
<h3>Serializer Changes</h3>
<p>The <em>RSS 1.0 Serializer</em> now works again.</p>
<p>Updated the <em>RDF/XML Abbreviated</em> serializer to do proper
reference counting on the blank/resource nodes used as subjects and
objects to prevent dual-triple generation. Fixes the reported
<a href="http://bugs.librdf.org/mantis/view.php?id=14">Issue#0000014</a>
</p>
<h3>Other Changes</h3>
<p>The internal SAX2 API can also prevent network fetches with the
feature <code>RAPTOR_FEATURE_NO_NET</code>.</p>
<p>Fixed a SAX2 problem that caused parsers that use it to leak
memory for 1 URI, affected RDF/XML and RSS Tag Soup.
</p>
<p><code>rapper</code> help and verbose message formats were tidied.</p>
<h2 id="rel1_4_10"><a name="rel1_4_10">Raptor 1.4.10 Changes</a></h2>
<h3>General Changes</h3>
<p>No parser will now generate a triple with an identifier type
<code>RAPTOR_IDENTIFIER_TYPE_ORDINAL</code>. Only identifier type
resource, anonymous (blank node) and literal will be generated.
All serializers will convert any
<code>RAPTOR_IDENTIFIER_TYPE_ORDINAL</code> type on input to type
resource.
</p>
<h3>Configuration Changes</h3>
<p>No longer adds LDFLAGS to pkgconfig file <code>raptor.pc</code>
and <code>raptor-config</code> fixing
<a href="http://bugs.librdf.org/mantis/view.php?id=97">Issue#0000097</a>.
</p>
<h3>Parser Changes</h3>
<p>All parsers no longer generate a triple with an identifier type
<code>RAPTOR_IDENTIFIER_TYPE_ORDINAL</code>, as deprecated in 1.4.8.
The replacement type generated is <code>RAPTOR_IDENTIFIER_TYPE_RESOURCE</code>.
</p>
<p>The RSS Tag Soup (<code>rss-tag-soup</code>) parser< now makes the
triples appear before parser destruction. This caused odd symptoms
like parsing in python returning no triples and the parser then
crashing during object destruction.
</p>
<p>The RDF/XML (<code>rdfxml</code>) parser no longer crashes if a
comment is seen outside an element, such as before or after the root
element.</p>
<h3>Serializer Changes</h3>
<p>The RDF/XML (<code>rdfxml</code>) serializer no longer crashes if
the serializer is used more than once.
</p>
<h2 id="rel1_4_9"><a name="rel1_4_9">Raptor 1.4.9 Changes</a></h2>
<h3>Configuration and Build Changes</h3>
<p>Now using <a href="http://subversion.tigris.org/">Subversion</a>
for version control and the <a href="INSTALL.html">Raptor installation instructions</a> explain how to get Raptor from Subversion.</p>
<p>configure now allows <code>--enable-parsers=node</code> and
<code>--enable-serializers=none</code>. Using both is possible!</p>
<p>No longer require libxml2 for the RSS Tag Soup parser</p>
<p>Various Win32 fixes and VC build files updates from John Barstow.
</p>
<h3>Documentation Changes</h3>
<p>A new
<a href="http://librdf.org/raptor/api/tutorial.html">Raptor Tutorial</a>
was written covering using all parsing and serializing functions along with
example code.
</p>
<p>The
<a href="http://librdf.org/raptor/api/reference-manual.html">Raptor Reference Manual</a>
now covers 100% of all functions, structs and defines with gtkdoc generated
documentation.</p>
<h3><code>rapper</code> utility Changes</h3>
<p><code>rapper</code> now uses namespaces found in parsing to give
hints to the serializer as to how to format the output. The result
of this is that <code>rapper</code> can be used as an RDF
pretty-printer and is especially good at such things as turning flat
N-Triples to RDF/XML or RDF/XML-Abbrev. such as:
</p>
<pre>
rapper -q -i ntriples -o rdfxml-abbrev example.nt
</pre>
<h3>Parser Changes</h3>
<p>All parsers no longer generate
<code>RAPTOR_IDENTIFIER_TYPE_PREDICATE</code> as the statement
predicate type, as deprecated in 1.4.8. The replacement
type generated is <code>RAPTOR_IDENTIFIER_TYPE_RESOURCE</code>.</p>
<p>The Turtle parser now has <code>true</code> and <code>false</code>
boolean literals, which were accidently omiited from the parser in
the 1.4.8 update.
</p>
<p>Parsers can register capabilities for handling multiple mime types
with Q values. These are then used in WWW requests for content
in the <code>Accept:</code> header for HTTP. Added
<code>raptor_parser_factory_add_mime_type</code> for registering,
<code>raptor_parser_get_accept_header</code> to get the accept header
values for the types supported by one parser.
</p>
<p>From the previous change, the RSS parser now accepts several
unregistered RSS mime types as well as the registered Atom one; the
RDF/XML parser accepts unregistered mime type <code>text/rdf</code>
seen occasionally; the Turtle parser accepts several experimental
mime types. All unregistered or experimental types are accepted with
lower Q than any registered type.
</p>
<p>The RSS Tag Soup parser for RSS* and Atom no longer requires
libxml2 (for it's XML Reader API). Internal changes mean that it
will fully work on top of expat.</p>
<h3>Serializer Changes</h3>
<p>The RSS/Atom serializer now uses input namespace declarations to
choose namespaces on output.</p>
<p>Added <code>raptor_serialize_set_namespace_from_namespace</code>
to set a namespace for serializing from an existing
<code>raptor_namespace</code>.
</p>
<p>Serializing to RDF/XML (or RDF/XML Abbrev) now does not
double-free URI strings.
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=65">Issue#0000065</a>
</p>
<p>RSS serializer no longer writes the XML header twice.</p>
<h3>IOStream Class Changes</h3>
<p>Added <code>raptor_iostream_write_uri</code> to directly write a URI
to an iostream without the need to go via a string.</p>
<p>Fixed bug in <code>raptor_iostream_write_xml_any_escaped_string</code>
failing to write ';' after escaping U+0009 and U+000A</p>
<h3>Namespaces Class Changes</h3>
<p>Added <code>raptor_namespaces_qname_from_uri</code> to do URI
splitting into qname prefering to use the current in-scope namespaces
before having to search.</p>
<p><code>raptor_namespaces_format</code> now NULL-terminates the namespace string.
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=62">Issue#0000062</a>
</p>
<p>Added <code>raptor_namespace_get_counted_prefix</code> to return a
namespace prefix and it's length.</p>
<h3>QName Class Changes</h3>
<p>Added <code>raptor_qname_get_namespace</code> to get the namespace
associated with a QName.</p>
<h3>StringBuffer Class Changes</h3>
<p><code>raptor_stringbuffer_append_counted_string</code> and
<code>raptor_stringbuffer_append_string</code> now Do nothing on
appending a NULL string or a string of length 0.
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=73">Issue#0000073</a>
</p>
<h3>Unicode Class Changes</h3>
<p><code>raptor_utf8_to_unicode_char</code> now also checks for
overlong UTF-8 sequences, illegal code positions or out of range
codes.
</p>
<h3>URI Class Changes</h3>
<p>Deprecated <code>raptor_uri_is_file_uri</code> which takes a
URI string argument for new function <code>raptor_uri_string_is_file_uri</code>
which more clearly says that.
</p>
<p>Changed all URI string calloc/mallocs to add enough room for a
full pointer at the string end to stop valgrind moaning on 64bit
systems when looking for the end of string NUL.
</p>
<p><code>raptor_uri_set_handler</code> and
<code>raptor_new_iostream_from_handler</code> now take const
<em>handler</em> arguments.
</p>
<h3>WWW Class Changes</h3>
<p>Get the curl success status into a long, not an int which causes
failure on 64 bit.
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=75">issue#0000075</a>
</p>
<p>WWW requests for content to parse now always send an appropriate
<code>Accept:</code> header with Q values for the parser, or for the
<code>guess</code> parser, all supported mime types.
</p>
<h3>Internal Changes</h3>
<p>Added XML element methods
<code>raptor_xml_element_get_attributes</code> and
<code>raptor_xml_element_get_attributes_count</code>,
<code>raptor_xml_element_is_empty</code>
to the SAX2 API.
</p>
<p>Many internal changes were made to the SAX2 API to finally
separate XML and RDF/XML parts. The SAX2 API is now fully usable on
either libxml2 or expat. That last sentence implies a lot of work,
by the way.</p>
<h2 id="rel1_4_8"><a name="rel1_4_8">Raptor 1.4.8 Changes</a></h2>
<h3>General Changes</h3>
<p>A large source re-arrangement was performed. All C sources and
headers that build the library are now in the src dir, general
documentation in the doc dir and utilities in the utils dir. This
both tidied up the mixture of files at the top level and also enabled
better use with gtk-doc.
</p>
<p>Future API change: From the next release of
Raptor, <code>raptor_statement</code> predicates will return
identifiers of type <code>RAPTOR_IDENTIFIER_TYPE_RESOURCE</code>
instead of <code>RAPTOR_IDENTIFIER_TYPE_PREDICATE</code>.
Identifiers of type <code>RAPTOR_IDENTIFIER_TYPE_ORDINAL</code> may
no longer be returned in any statement position (to be confirmed).
</p>
<p>Version Control change: Raptor will be switching to use
<a href="http://subversion.tigris.org/">Subversion</a>
for version control after the 1.4.8 release. Please check the
<a href="http://svn.librdf.org/">Redland Subversion site</a>
for the latest status or the online
<a href="http://librdf.org/raptor/INSTALL.html">Raptor installation notes</a>
for the raptor specific subversion installation information.
</p>
<h3>Configuration Changes</h3>
<p>The autogen.sh script for building from CVS was revamped to be
more modular.</p>
<p><code>configure</code> now takes an <code>--enable-gtk-doc</code>
option to enable building of the documentation using the
<code>gtk-doc</code> utility. It is by default enabled only if the
utility is available.
</p>
<p>Added a new configure option <code>--enable-serializers</code> (in
1.4.7) to allow the selection of the required RDF serializers from
any of those supported.</p>
<p><code>raptor-config</code> now has a <code>--options</code>
argument to list the configured or discovered options of the library
such as parsers, serializers and other choices.
</p>
<h3>Documentation Changes</h3>
<p>The GNOME <code>gtk-doc</code> program is now used to
automatically extract documentation from source comments into
reference documentation. This is then merged with templates and
additional documentation to provide a reference manual for raptor
as XML document which is turned into HTML along with GNOME devhelp
support.</p>
<p>This new documentation intended to replace the libraptor manual
page/web page as easier to read document with scope for better
expanding with more detail of raptor including examples and tutorial
information. The manual page will continue to contain the summary
information for the present.
</p>
<h3>Portability Changes</h3>
<p>Fixed a long-standing URI resolution bug on win32 - only remove
leading / if there is one present (patch from John C. Barstow)</p>
<h3><code>rapper</code> utility Changes</h3>
<p>Altered the <code>-g</code> argument to invoke the guessing parser
rather than guess on file/URI name alone. This is now equivalent to
choosing an input syntax of <em>guess</em> with <code>-i guess</code>.</p>
<p>Added a <code>--show-namespaces</code> long option (no short version)
to show namespaces that are declared in the parsed content.
</p>
<h3>Parser Changes</h3>
<p>A new guessing parser was added, picking the actual parser to use
at run-time based on protocol or other information.</p>
<p>Allow a content type returned by a protocol (such as HTTP) to
enable choosing of parser at run-time. Added a new optional
parser factory method <code>content_type_handler</code> to return this.
</p>
<p>Allow parsers to handle several syntaxes rather than only 1 or 2.
</p>
<p>Parsers can now return namespace prefix/URI declarations as
they are given in the content by the means of a new handler type
<code>raptor_namespace_handler</code> and parser method
<code>raptor_set_namespace_handler</code>. Duplicate namespace
prefix/URIs can be returned.
</p>
<h4>GRDDL Parser Changes</h4>
<p>Bug fix when the entire content is in one chunk (René Puls).</p>
<h4>Guessing Parser Changes</h4>
<p>A new parser that guesses the actual parser to use at run-time
based on a combination of MIME Content-Type, file or URI name and in
future, iniital bytes of the content. If the Content-Type is an
exact match to a known parser, it is always chosen before trying
heuristics.
</p>
<h4>RDF/XML Parser Changes</h4>
<p>When emitting literals, handle a datatyped empty literal. This
is a post-REC errata for the revised RDF/XML recommendation.
See
<a href="http://lists.w3.org/Archives/Public/www-archive/2005Jul/0017.html">archived example</a>
for further information.
</p>
<h4>RSS Tag Soup Parser Changes</h4>
<p>Added atom 1.0 support including use of the new namespace. Atom
0.3 namespace terms are turned into new properties. Replace atom
copies of Dublin Core or RSS properties with the original terms:
</p>
<div style="text-align:center">
<table>
<tr><th>Atom 1.0 term</th> <th>Original term</th></tr>
<tr><td><code>atom:content</code></td> <td><code>rss:description</code></td></tr>
<tr><td><code>atom:id</code></td> <td><code>rss:link</code></td></tr>
<tr><td><code>atom:published</code></td> <td><code>dc:date</code></td></tr>
<tr><td><code>atom:rights</code></td> <td><code>dc:rights</code></td></tr>
<tr><td><code>atom:title</code></td> <td><code>rss:title</code></td></tr>
</table>
</div>
<p>Apply the in-scope base URI (such as from <code>xml:base</code>)
to atom 1.0 fields that take URI values:
<code>atom:id</code>, <code>atom:icon</code> and <code>atom:logo</code>.
</p>
<p>Added optional date parsing code to turn XML RSS date fields into
ISO format ones, suitable for Atom and XML schema datatypes format.
Will use library parsedate code from curl or INN if available.
</p>
<p>XML RSS field <code>pubDate</code> is now turned into Dublin Core
<code>dc:date</code> field in the ISO format.
</p>
<p>XML RSS field <code>content</code> is turned into
<code>content:encoded</code> in RDF triples on output with
escaping.</p>
<h4>Turtle Parser Changes</h4>
<p>Updated to support Turtle version 2006-01-02
(<a href="http://www.dajobe.org/2004/01/turtle/">announcement</a>).
</p>
<p>Switch qname, blank node and prefix definitions to SPARQL ones.</p>
<p>Check for illegal not-hexadecimal \u and \U escape values.</p>
<p>Fix greedy matching of long literals ("""....""") that ended on
the last """ found rather than the first.</p> <!-- """ -->
<p>Added double and decimal constants.</p>
<p>Added optional +- sign to all numeric constants.</p>
<p>Allow \" escape inside long strings.</p>
<p>Take care to reset the generated <code>raptor_statement</code>
language and datatype fields when not used.
</p>
<h3>Serializer Changes</h3>
<p>Added a new Atom 1.0 serializer (name <em>atom</em>)
by parameterising the RSS 1.0 serializer.
</p>
<p>Added a new Adobe XMP compatible serializer (name <em>rdfxml-xmp</em>)
by parameterising the RDF/XML Abbreviated serializer. Patch provided by
Sid Steward.
</p>
<p>All serializers can be chosen at <code>configure</code> time from
those available using configure option <code>--enable-serializers</code>.
</p>
<p>The RSS parser and serializer can now be independently enabled or
disabled. The RSS serializer no longer requires an XML parser.</p>
<h3>RDF/XML Serializer / XML Writer Changes</h3>
<p>A new XML Writer feature
<code>RAPTOR_FEATURE_WRITER_XML_VERSION</code> was added to allow
chosing XML 1.0 (value 10) or XML 1.1 output (value 11). This
feature is also accepted by serializers as an option and used by the
RDF/XML and RDF/XML-Abbrev serializers.
</p>
<p>A new XML Writer feature
<code>RAPTOR_FEATURE_WRITER_XML_DECLARATION</code> was added to allow
omitting the XML declaration (default true).
</p>
<p>Added functions <code>raptor_xml_any_escape_string()</code>
and <code>raptor_iostream_write_xml_any_escaped_string()</code>
which take an XML version. The XML 1.0 functions give errors
when attempting to write #x1-#x1f (excluding #x9, #xA, #xD) or #x7F.
</p>
<h3>Atom 1.0 Serializer Changes</h3>
<p>Added a new serializer using the Atom 1.0 format and namespace.
This reads RDF triples in the RSS 1.0 model, along with any
additional atom 1.0 properties and serializes an Atom 1.0 feed
file.</p>
<h3>Adobe XMP Serializer Changes</h3>
<p>Added a new serializer writing RDF/XML in the profile used by
Adobe XMP. Note that this does require RDF triples to be used in a
certain style; for example all triple subjects are the "current
documment" giving <code>rdf:about=""</code>.</p>
<h3>URI Class Changes</h3>
<p>Fix a bug when adding a default path of / to a URI
in functions <code>raptor_new_uri_for_xmlbase()</code>
and <code>raptor_new_uri_for_retrieval()</code>.
(Bug #<a href="http://bugs.librdf.org/mantis/view.php?id=45">0000045</a>)
</p>
<p><em>raptor_uri_equals</em> was altered to accept NULL pointers,
which do not compare equal to a non-NULL URI. NULL does equal NULL.
</p>
<h3>Internal Changes</h3>
<p>The internal SAX2 class was extensively changed so that remaining
interdependencies with the RDF/XML parser were removed and it can now
be re-used for other syntaxes cleanly. Several functions
were modified or added.</p>
<p>Removed old and hardly-tested internal support for XML entity
resolution (libxml only).</p>
<p>Various fixes for GCC 4 warnings.
</p>
<h2 id="rel1_4_7"><a name="rel1_4_7">Raptor 1.4.7 Changes</a></h2>
<p>Fix a couple of crashes in the RSS tag soup parser / serializer
(Dave Beckett, Suzan Foster).</p>
<p><code>configure</code> now looks for the
<code>libxslt/xslt.h</code> header as well as the
<code>libxslt</code> library and disables XSLT and GRDDL support it
if is missing. This catches systems with the libraries without
headers as has happened on some OSX versions.
</p>
<p>In serializers rdfxml and rdfxml-abbrev, report failure to
serialize to RDF/XML if the predicate URI is not absolute.
</p>
<h2 id="rel1_4_6"><a name="rel1_4_6">Raptor 1.4.6 Changes</a></h2>
<p>Added <code>--with-xslt-config</code> configure option</p>
<p>Added a new parser for
<a href="http://www.w3.org/2004/01/rdxh/spec">Gleaning Resource Descriptions from Dialects of Languages (GRDDL)</a>
which allows reading XHTML and XML as RDF triples by using profiles
in the document that declare XSLT transforms from the XHTML/XML
content into RDF/XML which is the RDF content. It does not
support all the GRDDL styles, for example
<code>dataview:namespaceTransformation</code>,
or perform recursive transformations.
</p>
<p>The turtle parser now accepts """long literals"""</p>
<p>XML writer feature support were added in 1.4.5 and not documented.
The new functions are:
<code>raptor_xml_writer_features_enumerate</code>,
<code>raptor_xml_writer_set_feature</code>,
<code>raptor_xml_writer_set_feature_string</code>,
<code>raptor_xml_writer_get_feature</code> and
<code>raptor_xml_writer_get_feature_string</code>.
The three XML writer features added are
\fBRAPTOR_FEATURE_WRITER_AUTO_INDENT\fR with boolean value (default true)
to auto-indent the XML,
\fBRAPTOR_FEATURE_WRITER_AUTO_EMPTY\fR with boolean value (default true)
to automatically generate empty elements if a start/end element sequence
has no content and
\fBRAPTOR_FEATURE_WRITER_INDENT_WIDTH\fR with an integer value (default 2)
to set the indenting level for the XML.
</p>
<p>New build configuration and portability fixes for win32 (John Barstow)</p>
<p>Portability fixes for win32 - added
<code>SIZEOF_UNSIGNED_SHORT</code> (Dave Viner, others)</p>
<p>Added a signing memory debugging system to aid checking when
raptor-allocated memory is freed in another library or vice-versa
enabled by <code>--with-memory-signing</code> configure option
(defaults to on in maintainer mode).</p>
<p>Fixed a few internal malloc/frees to use RAPTOR_MALLOC / RAPTOR_FREE
so that the above signed memory system worked.</p>
<p>RDF/XML serializer:
Use the maximal name when splitting a predicate.<br />
Turn datatyped literals that are rdf:XMLLiteral into inline XML with
<code>rdf:parseType="Literal"</code> rather than XML-escaped.
</p>
<p>RDF/XML abbreviated serializer:
Fix a crash when there is a NULL base URI.
Use the maximal name when splitting a predicate.<br />
Turn datatyped literals that are rdf:XMLLiteral into inline XML with
<code>rdf:parseType="Literal"</code> rather than XML-escaped.
</p>
<p>RSS tag soup parser:
Fix crash with unexpected use of <code>alternate</code> attribute.<br />
Update from Suzan Foster to reflect the latest status of the
enclosure vocabulary and allow multiple common items and fields.
</p>
<p>RSS 1.0 serializer:
Added RSS enclosures serializing.
</p>
<p><code>grapper</code> example GTK program now stores the window
width and height using gconf2.</p>
<h2 id="rel1_4_5"><a name="rel1_4_5">Raptor 1.4.5 Changes</a></h2>
<p>Added a new <em>RDF/XML with abbreviations</em> serializer
<code>rdfxml-abbrev</code> written by Steve Shepard which handles
several of the abbreviations specified by the
<a href="http://www.w3.org/TR/rdf-syntax-grammar/">RDF/XML Syntax Specification (Revised)</a>
W3C Recommendation. It is suitable for writing small documents as
there are known scaling issues.
</p>
<p>The RSS tag soup parser was updated to work better when there is
no base URI given. It also now supports reading the
<a href="http://inamidst.com/rss1.1/">RSS 1.1</a> format and
turning it into RSS 1.0 model triples.</p>
<p>Deprecated <code>raptor_ntriples_string_as_utf8_string</code> as
rather too internal to be useful, since it only works with a parser.
</p>
<p>More fixes to work around the broken libxml2 on Apple OSX 10.3.x
with inconsistent shared libraries / headers.</p>
<p>Experimental and incomplete Notation 3 parser - updated to match
changes to Turtle. CVS changes only, not enabled in standard builds.
</p>
<h2 id="rel1_4_4"><a name="rel1_4_4">Raptor 1.4.4 Changes</a></h2>
<p>Make the RSS tag soup parser handle RSS 0.9 namespace elements by
turning them into RSS 1.0.</p>
<p>Fix a couple of crashes in the RSS 1.0 serialiser when
no base URI is used.</p>
<p>Make <code>raptor_uri_to_relative_counted_uri_string</code>
work when the base or reference URI have no paths such as like
<em>http://example.org</em>
</p>
<p>Added portability fixes for Win32 to get Raptor 1.4.3 building
with MS Visual Studio using expat and libcurl. The RAPTOR_INTERNAL
define was moved to the build configuration and defines added for
integral type sizes. Patch from Dave Viner (dviner at apache dot
org).</p>
<h2 id="rel1_4_3"><a name="rel1_4_3">Raptor 1.4.3 Changes</a></h2>
<p>A release with the major new feature of an XML writer API.
This is now used along with a new supporting XML element class to
improve the existing RDF/XML serializer and to provide a new
<a href="http://purl.org/rss/1.0/spec">RSS 1.0</a> serializer.
</p>
<p>This API it is also used by the next release of
<a href="http://librdf.org/rasqal/">Rasqal</a> to provide serializing
of query results to XML.
</p>
<p>The new <code>raptor_xml_writer</code> class functions added are:
<code>raptor_new_xml_writer</code> (constructor),
<code>raptor_free_xml_writer</code> (destructor),
<code>raptor_xml_writer_empty_element</code>,
<code>raptor_xml_writer_start_element</code>,
<code>raptor_xml_writer_end_element</code>,
<code>raptor_xml_writer_cdata</code>,
<code>raptor_xml_writer_cdata_counted</code>,
<code>raptor_xml_writer_raw</code>,
<code>raptor_xml_writer_raw_counted</code>,
<code>raptor_xml_writer_comment</code> and
<code>raptor_xml_writer_comment_counted</code>.
</p>
<p>The new <code>raptor_xml_element</code> class functions added are:
<code>raptor_new_xml_element</code> (constructor),
<code>raptor_free_xml_element</code> (destructor),
<code>raptor_xml_element_get_name</code>,
<code>raptor_xml_element_set_attributes</code>,
<code>raptor_xml_element_declare_namespace</code> and
<code>raptor_iostream_write_xml_element</code>.
</p>
<h3>Parser Changes</h3>
<p>RSS tag soup parser now works with older libxml2s (2.5.10+),
including the one shipped with some Apple OSX versions that has an
inconsistent header file and library.</p>
<p>RSS tag soup parser recognises/scores more common XML RSS file names.</p>
<p>RSS tag soup parser turns XML RSS
<code><guid isPermaLink="true">val</guid></code>
into RDF/XML form <code><guid rdf:resource="val"/></code>, leaving
the non isPermaLink form to be a literal value.</p>
<p>A bug was found in libxml2 that causes double expanding of XML
entities in RDF/XML. This has been reported but cannot be worked
around from raptor. The expat XML parser can be used as an
alternative, as it does not have this problem. A test was added for
this bug but it will not cause the test suite ('make check') to
fail.</p>
<p>Added additional
<a href="http://www.dajobe.org/2004/01/turtle/">Turtle</a>
parser tests that cover Notation 3 syntax that is not part of the
Turtle language.</p>
<p>Added
<code>raptor_parser_set_feature_string</code> and
<code>raptor_parser_get_feature_string</code>
methods to set/get string feature values.</p>
<h3>Serializer Changes</h3>
<p>Added feature <code>relative_uris</code> for serializers. This
is used by the RDF/XML serializer and enabled by default.</p>
<p>Added feature <code>start_uri</code> for serializers with a string
value to set the start URI for serializing. Not used at present.</p>
<p>Added new methods <code>raptor_serializer_features_enumerate</code>
to list serializer features and functions to set/get serializer
feature integer or strings values:
<code>raptor_serializer_set_feature</code>,
<code>raptor_serializer_get_feature</code>,
<code>raptor_serializer_set_feature_string</code> and
<code>raptor_serializer_get_feature_string</code>.
</p>
<p>Added <code>raptor_serialize_set_namespace</code> to allow user
declaration of prefix/URI namespaces pairs as serializing hints.</p>
<p>the RDF/XML serializer was improved using the new XML Writer class
so it now uses any user-declared namespace hints in it's output and
emits relative URIs whenever possible. The latter was provided
by a patch from René Puls.</p>
<p>A new
<a href="http://purl.org/rss/1.0/spec">RSS 1.0</a>
serializer was added, using the new XML Writer class
and using the same structures, classes and properties as the RSS tag
soup parser.</p>
<h3>URI class changes</h3>
<p>Added relative URI generating code from a patch written by René Puls
and provide this with two new methods
<code>raptor_uri_to_relative_uri_string</code> and
<code>raptor_uri_to_relative_counted_uri_string</code>.
</p>
<p>Added <code>raptor_uri_print</code> to print a URI to a file handle.</p>
<p>Added methods <code>raptor_uri_to_string</code> and
<code>raptor_uri_to_counted_string</code> to return a URI as newly
allocated strings.</p>
<h3>I/O Stream Changes</h3>
<p>Many classes gained methods to write to iostreams, supporting the
new XML Writer class functionality. The added methods are:
<code>raptor_iostream_write_namespace</code>,
<code>raptor_iostream_write_ntriples_string</code>,
<code>raptor_iostream_write_qname</code>,
<code>raptor_iostream_write_statement_ntriples</code>,
<code>raptor_iostream_write_stringbuffer</code>,
<code>raptor_iostream_write_xml_element</code> and
<code>raptor_iostream_write_xml_escaped_string</code>.
</p>
<h3>Namespace Class Changes</h3>
<p>Added <code>raptor_namespace_copy</code> copy
constructor and <code>raptor_new_namespace_from_uri</code>
constructor to build a namespace from a raptor_uri object.</p>
<p>Added utility function <code>raptor_new_namespace_parts_from_string</code>
to decode syntax of the form
<code>xmlns:</code><em>prefix</em><code>="</code><em>uri</em><code>"</code>
into <em>prefix</em> and <em>uri</em> string pairs.
</p>
<p>Added <code>raptor_namespaces_find_namespace_by_uri</code> method
for namespace stack to find a declared namespace by URI. This
complements <code>raptor_namespaces_find_namespace</code> which
already provides searching by prefix.</p>
<h3>Unicode and UTF-8 Changes</h3>
<p>Added several methods for checking characters forming
parts of XML 1.0 or XML 1.1 names:
<code>raptor_unicode_is_xml10_namestartchar</code>,
<code>raptor_unicode_is_xml11_namestartchar</code>,
<code>raptor_unicode_is_xml10_namechar</code> and
<code>raptor_unicode_is_xml11_namechar</code>.
</p>
<p>Added a function <code>raptor_utf8_check</code> to check that a
string is legal UTF-8 and all the encoded Unicode characters are in
the range U+0 <= character <= U+10FFFF</p>
<p>Added a function <code>raptor_xml_name_check</code> to check that
a string is a legal XML name (1.0 or 1.1) as well as legal UTF-8.</p>
<h3>Other Changes</h3>
<p>Feature support: Added <code>raptor_feature_value_type</code> to
determine value of a feature - either integer (most) or string.</p>
<p>XML QName class: Added <code>raptor_qname_copy</code> copy
constructor.</p>
<p>Sequence class: Added <code>raptor_sequence_join</code>
to join two sequences of items, leaving one empty.</p>
<p>Statement class: Added <code>raptor_statement_copy</code> copy
constructor and <code>raptor_free_statement</code> destructor.
Previously these were internal to raptor.</p>
<p>The <code>rapper</code> utility was modified to add a feature form:
<code>-f xmlns:</code><em>PREFIX</em><code>="</code><em>URI</em><code>"</code>
allowing the setting of output serializer namespaces.</p>
<p>The namespace URI string constants exported by raptor are now of
type unsigned char*.</p>
<h2 id="rel1_4_2"><a name="rel1_4_2">Raptor 1.4.2 Changes</a></h2>
<p>Make <code>raptor_xml_escape_string</code> fail correctly when
given bad UTF-8 to escape.</p>
<h2 id="rel1_4_1"><a name="rel1_4_1">Raptor 1.4.1 Changes</a></h2>
<p>Fixed a buffer overrun in decoding a URI scheme in
<code>raptor_uri</code> constructors such as
<code>raptor_new_uri</code>.</p>
<p>Fixed a crash in RSS enclosures crash when the <code>url</code>
attribute seen on a non-<code><enclosure></code> element</p>
<p><code>raptor_xml_escape_string</code> return value has changed to
be an int, returning <0 on failure. This allows the empty string
encoding an empty string case to work and be distinguished from an
error.
</p>
<h2 id="rel1_4_0"><a name="rel1_4_0">Raptor 1.4.0 Changes</a></h2>
<p>A release with the major new feature of providing serializing of
RDF triples to syntaxes. It also added a new support class for I/O
streams and had other minor fixes.</p>
<p>Added a Raptor Serializer class (<code>raptor_serializer</code>)
with similar style to Parser (<code>raptor_parser</code>). Two
serializers are provided, for RDF/XML and N-Triples. The serializing
can be done to files, C <code>FILE*</code> or to strings. The
raptor_iostream class that provides this also allows writing
to any other form by creating a custom iostream.
</p>
<p>The new raptor_serializer class functions added are:
<code>raptor_serializers_enumerate</code>,
<code>raptor_serializer_syntax_name_check</code>,
<code>raptor_new_serializer</code>,
<code>raptor_free_serializer</code>,
<code>raptor_serialize_start</code>,
<code>raptor_serialize_start_to_filename</code>,
<code>raptor_serialize_start_to_string</code>,
<code>raptor_serialize_start_to_file_handle</code>,
<code>raptor_serialize_statement</code>,
<code>raptor_serialize_end</code>,
<code>raptor_serializer_get_iostream</code>,
<code>raptor_serializer_set_error_handler</code>,
<code>raptor_serializer_set_warning_handler</code> and
<code>raptor_serializer_get_locator</code>
</p>
<p>Added a Raptor I/O stream abstraction in
<code>raptor_iostream</code> class to support serializing of RDF to
multiple output streams such as to filenames, to C standard I/O